我在IntelliJ中设置了一个多模块项目。我的模块结构如下所示:
Project (no pom.xml file)
|
|--moduleA
| |
|
|--moduleB
| |-Log4J
| |-Jackson
|
|--moduleC
| |-moduleA
| |-moduleB
| |-Log4J
|
|--moduleD
| |-moduleC
| |-moduleA
| |-moduleB
| |-Log4J
|
|--moduleE
| |-moduleA
| |-moduleB
| |-moduleC
| |-Log4J
moduleC
取决于moduleA
和moduleB
,moduleD
取决于moduleA
,moduleB
和moduleC
。 moduleE
也是如此。
我想创建两个优步罐子。一个用于moduleD
,一个用于moduleE
,每个包含模块的依赖关系,包括模块A,B和C.
我正在使用Maven 3管理我的依赖项和maven-shade-plugin来创建Uber jar。
我在pom.xml
文件中添加了必要的依赖项,如下所示:
<dependency>
<groupId>com.modules</groupId>
<artifactId>moduleA</artifactId>
<version>1.0</version>
</dependency>
我已将maven-shade-plugin
添加到每个模块的pom.xml
个文件中。到目前为止,我能够为moduleA
和moduleB
构建一个超级jar,但是当我尝试moduleC
时,我收到以下错误:
[WARNING] The POM for com.modules:moduleA:jar:1.0 is missing, no dependency information available
[WARNING] The POM for com.modules:moduleB:jar:1.0 is missing, no dependency information available
我该如何解决这个问题?
如果我通过IntelliJ构建和运行模块,一切正常。此外,我还可以通过配置IntellJ工件来构建超级jar。
如何配置Maven来执行此操作?我需要它,因为我想使用超级jar进行制作,我试图设置Jenkins在提交后构建解决方案。
我发布了以下帖子:How to create self-containing (standalone) jar of each modules of a multi-module maven project,但我无法使其发挥作用。
修改
这是maven-shade-plugin
和moduleA
moduleB
设置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
这是maven-shade-plugin
中的moduleC
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
如您所见,我正在使用默认配置。
答案 0 :(得分:1)
尝试添加
<includes>
<include>**</include>
</includes>
在您定义排除的同一个地方。
我能找到<filter>
的唯一出现是与包含和排除过滤器结合使用。
请勿抓住我,但这就是我猜你的构建失败的原因。