【问题标题】:Maven Project Requires Local Dependency to be BuiltMaven项目需要构建本地依赖
【发布时间】:2015-05-13 17:16:43
【问题描述】:

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

【问题讨论】:

    标签: java maven build maven-3 pom.xml


    【解决方案1】:

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

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

    父 pom 将具有 &lt;modules&gt; 标签,将 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。它将负责构建顺序。

    【讨论】:

    • 这与我想要的很接近,但是当我摆脱 &lt;systemPath&gt; 属性时,它默认在 maven 存储库中搜索 projectA-2.0.0-SNAPSHOT.jar 而不是使用本地存储库。有没有办法强制它先在本地检查?
    • 你现在不需要给systemPath。那是那里的模块依赖关系。
    • 现在可以使用了。我更改了 groupId 以测试它是否真的在本地工作,但忘记在其中一个子模块上更新它。
    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2023-03-13
    • 2020-10-18
    相关资源
    最近更新 更多