【问题标题】:Building project with maven containing other projects使用包含其他项目的 maven 构建项目
【发布时间】:2013-01-01 11:49:49
【问题描述】:

我有一个依赖于项目 B 的网络项目 A,

项目 B 依赖于 JAR C

问题:

当我打包web-project A时,b有一个jar(预期),但它们没有引用jar c

所以,当我运行我的网络项目 A 并访问项目 B 的功能时,我得到了 NotFoundException 类,因为不包含 jar C

任何帮助我如何在父项目 A 中包含 jar C 而无需自己在项目 A 中编写 pom.xml

网络项目pom.xml

<project ....>
    ..........
    <dependencies>
        <!--Local Projects -->
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>project B</artifactId>
            <version>1.0.0</version>
       </dependency>
    </dependencies>

</project>

项目Bpom.xml

<project ....>
<dependencies>
    <dependency>
        <groupId>jar_C</groupId>
        <artifactId>jar_C</artifactId>
        <version>1.0.0</version>

    </dependency>

</dependencies>

【问题讨论】:

  • 你能给我们更多的信息吗?显示 poms 中定义的实际依赖项。
  • 我编辑了代码以显示我的 pom.xml
  • 这是一个多模块项目吗?换句话说,项目 C 是否已经在 B 之前构建并且 B 在 A 之前构建?
  • yab 它是一个多模块项目,项目 B 是在 A 之前构建的,C 只是我使用的一个 jar
  • 您没有偶然将dependencyManagement 中的依赖项指定为测试(或提供)依赖项?

标签: maven maven-2 maven-plugin


【解决方案1】:

作为你的配置,Maven 只负责编译,也就是说一个 jar 不会带走它的任何依赖。如果你需要把依赖包在一起,你应该使用Assembly插件,见:here

【讨论】:

    【解决方案2】:

    阅读Maven Dependency Mechanism

    import(仅在 Maven 2.0.9 或更高版本中可用)

    此范围仅用于 &lt;dependencyManagement&gt; 部分中的 pom 类型的依赖项。它指示应将指定的 POM 替换为该 POM 的 &lt;dependencyManagement&gt; 部分中的依赖项。由于它们被替换,具有导入范围的依赖项实际上并不参与限制依赖项的传递性。

    所以基本上,试试这个

    网络项目pom.xml

    <project ....>
        ..........
        <dependencies>
            <!--Local Projects -->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>project B</artifactId>
                <version>1.0.0</version>
                <scope>import</scope>
           </dependency>
        </dependencies>
    
    </project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2016-01-13
      • 2018-05-28
      相关资源
      最近更新 更多