【问题标题】:Maven dependeny on other other maven projectMaven 对其他其他 Maven 项目的依赖
【发布时间】:2014-07-01 04:07:39
【问题描述】:

我有两个 Maven (GWT) 项目,一个应该依赖另一个。我刚刚添加了如下依赖项:

<dependency>
    <groupId>myGroup</groupId>
    <artifactId>MyArtifact</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>

这些类被正确引用,我可以在我的其他项目中使用它们。但是如果我想触发一个 Maven 构建,它会抱怨:“无法解析项目的依赖项:找不到工件 myGroup:MyArtifact:jar:1.0-SNAPSHOT”

该项目没有 jar,因为它是一个 GWT Web 应用程序。它有一个“战争”文件。我测试了这个论点并尝试了诸如“pom”或“war”之类的值。然后它不会显示该错误,但单元测试确实会失败,因为无法找到来自其他项目的类。

【问题讨论】:

  • 这些独立的项目还是同一个项目中的模块?您是从 IDE 还是从命令行调用 Maven?

标签: java maven gwt dependencies pom.xml


【解决方案1】:

首先为 MyArtifact 项目调用 maven install,该项目将创建一个 jar 并将其放置在您的本地 maven 存储库中。

现在您可以将maven build 用于依赖项目。

【讨论】:

    【解决方案2】:

    你需要define in the other project which is a war packaging things like this:

      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <attachClasses>true</attachClasses>
          </configuration>
        </plugin>
        ...
      </plugins>
    

    这将创建一个带有分类器 classes 的工件,可以在类似这样的其他项目中引用 (

    <dependency>
      <groupId>myGroup</groupId>
      <artifactId>myArtifact</artifactId>
      <version>myVersion</myVersion>
      <classifier>classes</classifier>
    </dependency>
    

    【讨论】:

    • +1 但这是一种解决方法。我宁愿重新考虑让 WAR 依赖于共享 JAR 的项目组织。
    • 这取决于。如果你只有一个 Maven 项目,那就是 WAR 比没有。如果您已经有其他组件(多模块构建)而不是是。
    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2020-08-17
    • 2023-04-07
    • 2023-03-13
    • 2019-06-11
    • 2020-10-11
    • 2017-10-02
    相关资源
    最近更新 更多