【发布时间】:2011-05-08 04:52:06
【问题描述】:
我有 Maven 多模块项目。
A: parent.
B: child1.
C: child2.
B会被打包得到jar文件,然后c会使用这个jar文件来编译代码。
在 B 中,如果我运行mvn package,它将创建b.jar(停留在B/target/jars 而不是B/target - 用于其他目的)。
在 C 语言中,我需要使用 b.jar 来编译代码。
现在,从 A,当我运行时:mvn package。首先,我成功为B创建了b.jar文件。
但是在 C 的编译阶段,看起来 C 无法识别类路径中的b.jar(编译出错,因为 C 的代码无法从 B 导入类文件)。
我的问题是:我该如何解决这个问题?
---------Below 是 pom 文件
A: pom.xml
<groupId>AAA</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>C</module>
<module>B</module>
</modules>
B: pom.xml
<groupId>AAA</groupId>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<parent>
<artifactId>A</artifactId>
<groupId>AAA</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
C: pom.xml
<parent>
<artifactId>A</artifactId>
<groupId>AAA</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>AAA</groupId>
<artifactId>C</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>AAA</groupId>
<artifactId>B</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
....
【问题讨论】:
-
作为最佳实践(与此问题无关),模块 B 和 C 不应声明自己的 groupId 和版本;他们应该从父(模块 A)POM 继承这些。不过,他们仍然需要声明自己的包装和 artifactId。
标签: module dependencies maven