将一个maven项目添加到另一个maven项目中导致无法解决依赖项错误

时间:2016-12-01 11:10:45

标签: java maven repository

我有两个项目。 ABC和XYZ。 我需要的是在XYZ中获取ABC类

。为此,我已经将ABC的依赖性添加到XYZ中并在eclipse中执行了mvn clean。有效!

但是当我做了mvn clean install时它正在显示

Failed to execute goal on project XYZ: Could not resolve dependencies
Failure to find ABC-SERVER:ABC:jar:Server in https://repo.maven.apache.org/maven2 was cached in the local repository.

这是我的pom ABC的pom.xml:

<groupId>abc-server</groupId>
    <artifactId>ABCServer</artifactId>
    <name>ABCServer</name>
    <version>Server</version>
    <packaging>war</packaging>

XYZ的pom.xml:

<dependency>
        <groupId>abc-server</groupId>
        <artifactId>ABCServer</artifactId>
        <version>Server</version>
    </dependency>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <compilerArgument>-Xlint:all</compilerArgument>
                <showWarnings>true</showWarnings>
                <showDeprecation>true</showDeprecation>

            </configuration>
        </plugin>
    </plugins>

这样做的方法是什么。我需要从windows命令行运行mvn clean包。

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:1)

查看错误消息:

  

未能找到ABC-SERVER:ABC: jar :服务器

显然,它永远不会找到那种依赖,因为不存在这样的工件。你的ABC-SERVER打包成战争。

您可以通过将<type>war</type>添加到XYZ中的依赖项来使其正确解析依赖关系,但如果XYZ也是战争,则可能不是您想要的。 Maven将在XYZ战争中覆盖 ABC-SERVER战争(详见https://maven.apache.org/plugins/maven-war-plugin/overlays.html)。

如果您只想重用ABC-SERVER webapp中的,我认为正确的方法是将类分成新的jar工件并在两个webapps中使用它。

答案 1 :(得分:0)

您必须将ABCServer工件部署到远程存储库。

ABCServer存储库中的mvn deploy应该可以解决问题

答案 2 :(得分:0)

问题在于您将ABC项目打包为战争。你需要把包装改成罐子..
因此,将<packaging>war</packaging>更改为<packaging>jar</packaging>