Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Maven 2.2.1升级到Maven 3.0.4时的DependencyResolutionException_Maven_Maven 2_Maven 3_Dependency Resolution - Fatal编程技术网

从Maven 2.2.1升级到Maven 3.0.4时的DependencyResolutionException

从Maven 2.2.1升级到Maven 3.0.4时的DependencyResolutionException,maven,maven-2,maven-3,dependency-resolution,Maven,Maven 2,Maven 3,Dependency Resolution,我正试图将我的项目从Maven 2.2.1升级到Maven 3.0.4,但在依赖项解析方面遇到了问题。我花了一整天的时间通过查看Maven文档和类似的帖子来研究这一点,但我仍然被卡住了。这是我关于stackoverflow的第一个问题,希望我在这里已经很好地遵守了礼仪。谢谢你的帮助 我的项目结构如下: pom.xml (acme-parent) child-alpha +-----> pom.xml 此外,我自己的存储库中有以下文件: http://maven.my-own-repo.c

我正试图将我的项目从Maven 2.2.1升级到Maven 3.0.4,但在依赖项解析方面遇到了问题。我花了一整天的时间通过查看Maven文档和类似的帖子来研究这一点,但我仍然被卡住了。这是我关于stackoverflow的第一个问题,希望我在这里已经很好地遵守了礼仪。谢谢你的帮助

我的项目结构如下:

pom.xml (acme-parent)
child-alpha
+-----> pom.xml
此外,我自己的存储库中有以下文件:

http://maven.my-own-repo.com/acme/child-dep-jdk15/maven-metadata-local.xml
http://maven.my-own-repo.com/acme/child-dep-jdk15/1.0/child-dep-jdk15-1.0.jar
http://maven.my-own-repo.com/acme/child-dep-jdk15/1.0/child-dep-jdk15-1.0.pom
child alpha/pom.xml反过来对我自己的acme:child-dep-jdk15有一个概要文件依赖关系,它被单独构建到一个jar文件中,并有自己的.pom文件指定一个与child alpha相同的acme父级

以下是相关文件的摘录:

acme父级pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>acme</groupId>
    <artifactId>acme-parent</artifactId>
    <name>Acme Parent Project</name>
    <version>1</version>
    <packaging>pom</packaging>

    <properties>...</properties>

    <modules>
        <module>child-alpha</module>
    </modules>

    <repositories>
        <repository>
            <id>acme-repo</id>
            <url>http://maven.my-own-repo.com</url>
        </repository>
        <repository>
            <id>central</id>
            <url>http://repo1.maven.org/maven2</url>
        </repository>
    </repositories>

    <pluginRepositories>...</pluginRepositories>

    <build>
      <plugins>...</plugins>
    </build>

    <dependencies>...</dependencies>
</project>
我得到了以下日志消息和堆栈跟踪(删除了无关消息):

在使用Maven 2时,我从未在以下位置需要acme父级pom.xml:

我们自己的repo上没有父pom.xml的原因是,我们在创建版本控制分支时使用了一个脚本,该脚本根据我们所在的分支更改acme parent pom.xml中的一些值,因此,将pom.xml放在repo中,并为我们试图与持续集成服务器同时构建的所有不同分支保持正确的更新,将是一件复杂的事情

在Maven 2中,当构建子alpha时,Maven在一个目录上找到acme parent pom.xml不会有问题,即相对路径为../pom.xml,因此它永远不会尝试到我的存储库中找到它。在Maven 2中,仅将父pom.xml放在本地签出中,而不将其放在repo中效果很好

然而,当我尝试在Maven 3.0.4下构建子alpha时,出现了上述异常。起初,我认为我需要在子alpha的pom.xml顶部的标记中显式设置relativePath,但这并没有解决它——acme parent的pom.xml确实已经在默认的relativePath中了../pom.xml,所以不需要显式设置它

然后,我尝试在child alpha的pom.xml部分中注释child-dep-jdk15依赖项。子alpha maven构建成功完成,并注释掉了此依赖项

我不明白当child-dep-jdk15依赖项就位时,为什么child-alpha不会在Maven 3中构建。如果Maven最初能够正确地找到acme父pom.xml(根据顶部的块),那么为什么它现在在处理child-dep-jdk15依赖项时试图从repos下载它?我是否配置了错误的东西,如果是,我应该如何修复它

还有一件事:如果我首先在acme parent的pom.xml的同一目录中运行
mvn-N install
,然后尝试构建子alpha,那么子alpha构建成功,即使在代码中保留依赖项child-dep-jdk15。运行该命令后,我可以验证acme-parent-1.pom是否在本地.m2目录中。虽然这种变通方法对个别开发人员来说可能还可以,但对于我们的持续集成服务器来说,这将是一个问题,它需要能够为不同的分支运行并发构建


由于我前面提到的版本控制分支更改,我强烈希望不必重新配置我的存储库来承载acme父pom.xml。

在Maven 3中,如果下载失败并已修复(例如,通过将jar上载到存储库),它将缓存失败。要强制刷新,请将
-U
添加到命令行


对于
DependencyResolutionException
的其他可能原因,请参见Maven 3中的。

如果您刚刚下载失败并已修复(例如,通过将jar上载到存储库),它将缓存失败。要强制刷新,请将
-U
添加到命令行


有关
依赖解析异常的其他可能原因,请参见。

http://maven.my-own-repo...
下载:http://maven2.my-own-repo...
。您有两套或两套回购协议吗?
http://maven.my-own-repo...
下载:http://maven2.my-own-repo...
。你们有两套还是回购?
<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>acme</groupId>
        <artifactId>acme-parent</artifactId>
        <version>1</version>
    </parent>
    <artifactId>child-alpha</artifactId>
    <name>Child Alpha Project</name>
    <version>1.0</version>
    <packaging>jar</packaging>

    <scm>...</scm>

    <properties>...</properties>

    <build>
      <resources>...</resources>
      <plugins>...</plugins>
    </build>

    <profiles>
        <profile>
            <id>jdk15</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.5</jdk>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>acme</groupId>
                    <artifactId>child-dep-jdk15</artifactId>
                    <version>1.0</version>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

    <dependencies>...</dependencies>
</project>
<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>acme</groupId>
        <artifactId>acme-parent</artifactId>
        <version>1</version>
    </parent>
    <groupId>acme</groupId>
    <artifactId>child-dep-jdk15</artifactId>
    <name>Acme Child Dependency</name>
    <version>1.0</version>
    <packaging>jar</packaging>

    <build>...</build>

    <dependencies>...</dependencies>
</project>
mvn -U -e clean install
Downloading: http://maven2.my-own-repo.com/acme/acme-parent/1/acme-parent-1.pom
Downloading: http://repo1.maven.org/maven2/acme/acme-parent/1/acme-parent-1.pom

[...]

[ERROR] Failed to execute goal on project child-alpha: Could not resolve dependencies for project acme:child-alpha:jar:1.0: [...]

Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project acme:child-alpha:jar:1.0: [...]

Caused by: org.sonatype.aether.collection.DependencyCollectionException: Failed to collect dependencies for [...]
    at org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:258)
    at org.sonatype.aether.impl.internal.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:308)
    at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:150)
    ... 23 more
Caused by: org.sonatype.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for acme:child-dep-jdk15:jar:1.0
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:331)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:186)
    at org.sonatype.aether.impl.internal.DefaultDependencyCollector.process(DefaultDependencyCollector.java:412)
    at org.sonatype.aether.impl.internal.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:240)
    ... 25 more
Caused by: org.apache.maven.model.resolution.UnresolvableModelException: Could not find artifact acme:acme-parent:pom:1 in acme-repo (http://maven.my-own-repo.com)
    at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:126)
    at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:813)
    at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:664)
    at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:310)
    at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:232)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:322)
    ... 28 more
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact acme:acme-parent:pom:1 in acme-repo (http://maven.my-own-repo.com)
    at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:538)
    at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216)
    at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:193)
    at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:122)
    ... 33 more
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact acme:acme-parent:pom:1 in acme-repo (http://maven.my-own-repo.com)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:947)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:941)
    at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:669)
    at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)