我有2个Maven项目,A和B.项目A完全独立,而B需要A作为依赖项。目前,B从maven存储库获得A:
<dependency>
<groupId>com.myproject</groupId>
<artifactId>projectA</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
我想要做的是设置依赖关系,以便B可以引用A的本地实例。我可以执行以下操作:
<dependency>
<groupId>com.myproject</groupId>
<artifactId>projectA</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${basedir}/../projectA/target/projectA-2.0.0-SNAPSHOT.jar</systemPath>
</dependency>
但这仅在A已经构建时才有效(所以projectA-2.0.0-SNAPSHOT.jar
已经存在)。
在我没有构建A的情况下,有没有办法强制A在B之前构建?
答案 0 :(得分:1)
一种方法是创建父pom,并将这些项目添加为子模块。因此,目录结构如下所示:
+ pom.xml
|
+-A
| \
| + pom.xml
+-B
\
+ pom.xml
父pom会有<modules>
个标记,将A
和B
项目添加为子模块:
<groupId>com.myproject</groupId>
<artifactId>parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>A</module>
<module>B</module>
<modules>
然后,将A
模块添加为B
模块的依赖项。只需保持父ID,A和B的group-id相同。然后使用artifact-id引用模块。
pom.xml
的{p> B
就像:
<parent>
<groupId>com.myproject</groupId>
<artifactId>parent</artifactId>
<version>2.0.0-SNAPSHOT</version>
</parent>
<artifactId>projectB</artifactId>
<dependencies>
<dependency>
<groupId>com.myproject</groupId>
<artifactId>projectA</artifactId>
<version>2.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
现在,构建父pom。它将负责构建顺序。