java - Maven项目需要构建本地依赖

标签 java maven build maven-3 pom.xml

我有 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 之前构建?

最佳答案

一种方法是创建父 pom,并将这些项目添加为子模块。因此,目录结构将如下所示:

+ pom.xml
|
+-A
|  \ 
|   + pom.xml
+-B 
   \
    + pom.xml

父 pom 将具有 <modules>标签,添加AB作为子模块的项目:

<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模块。只需保持父级、A 和 B 的 group-id 相同即可。然后使用artifact-id 引用模块。

pom.xml对于 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。它将处理构建顺序。

关于java - Maven项目需要构建本地依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994705/

相关文章:

java - Freemarker 是否尊重方法描述符?

java - 没有配置文件的多个 src/main/resources 文件夹(我希望一次构建多个版本)

java - 如何通过mvn命令行传递testng.xml参数值

java - Eclipse、Maven 和 JMH : No matching benchmarks

c - x264 配置链接和构建问题

Java - 批处理文本文件的方法比单独执行相同次数的相同操作要慢得多

Java `if` 语句和 `else if` 未按预期工作

java - pom.xml 中缺少 Artifact com.oracle :ojdbc6:jar:11. 2.0

Xcode 7.3 在空闲状态下不断构建

javascript - 如何解决内置 AngularJS 应用程序的依赖问题?