如何为单个代码库配置Maven但多个工件

时间:2014-06-10 00:03:37

标签: java maven jenkins jar maven-shade-plugin

我有一个非常大的代码库,可以编译成JAR。我还使用了shade插件将其编译下来并将其与所有依赖项打包在一起。我还使用war插件来获取WAR文件。

关于WAR文件,一旦创建了目标,我就会有一个post-build事件,它只是将WAR文件复制到目的地,所以从技术上来说,我很擅长。

我遇到的问题是其他两个JAR。它们都共享相同的artifactId,因为它们都是在单个pom.xml中构建的,并且由于多种原因这是不可接受的(包括但不限于某些依赖项的缓存非常愚蠢的事实)关于认识到一个JAR是薄的,一个是完全依赖的。)

我需要做的是创建一个适合构建的pom.xml(或其组)(由Jenkins提供),它可以使用相同的代码库(从Github中提取),但创建两个单独的JAR文件,每个文件都有自己的artifactId。

作为一名Maven新手,我已经阅读了开头的书,在我看来,我想要的是一个带有两个模块的父pom.xml。但据我所知,每个模块都意味着一个单独的目录,其中包含单独的代码。正如我所说,这是从相同的代码库构建的。唯一的区别是一个是由#"常规"构建,另一个是使用" shade"插件和目标。

我唯一能想到的就是建立"常规" JAR然后使用" full的分类器构建带阴影的JAR?"如果这是答案,我可以谦卑地要求成人监督如何做到这一点,因为我没有看到如何。

如果那不是答案,我怀疑这一定是一个常见的问题,所以再一次,一些指导会非常有帮助!

1 个答案:

答案 0 :(得分:1)

我提出的解决方案是使用分类器作为“阴影”jar。因此,工件不会发生碰撞。

然后我遇到了访问它的问题,但也找到了该问题的解决方案 - How do I access a jar with a classifier?