Maven:仓库元素没有在POM内部distributionManagement中指定?

我试图运行命令, mvn release:perform ,但我得到这个错误:

未能执行目标org.apache.maven.plugins:maven-deploy-plugin:2.5:在项目上部署(default-deploy)git-demo:部署失败:repository元素没有在distributionManagement元素中的POM中指定,或者在-DaltDeploymentRepository = id :: layout :: url参数

这是我的pom.xml文件:

  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sonatype.blog</groupId> <artifactId>git-demo</artifactId> <packaging>jar</packaging> <version>1.1-SNAPSHOT</version> <name>git-demo</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <scm> <connection>scm:git:git@github.com:Christian-Achilli-KP/git-demo.git</connection> <url>scm:git:git@github.com:Christian-Achilli-KP/git-demo.git</url> <developerConnection>scm:git:git@github.com:Christian-Achilli-KP/git-demo.git</developerConnection> </scm> <distributionManagement> <!-- use the following if you're not using a snapshot version. --> <repository> <id>localSnap</id> <name>RepositoryProxyRel</name> <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url> </repository> <!-- use the following if you ARE using a snapshot version. --> <snapshotRepository> <id>MylocalSnap</id> <name>RepositoryProxySnap</name> <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.1</version> </plugin> </plugins> </build> </project> 

其实我可以看到

知识库

里面的声明

distributionManagent

标签。

这是我的settings.xml

 <settings> <servers> <server> <id>localSnap</id> <username>deployment</username> <password>****</password> </server> <server> <id>MylocalSnap</id> <username>deployment</username> <password>****</password> </server> <server> <id>myserver</id> <username>tomcat</username> <password>tomcat</password> </server> </servers> <mirrors> <mirror> <!--This sends everything else to /public --> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://127.0.0.1:8080/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <properties> <project.build.sourceEncoding>MacRoman</project.build.sourceEncoding> <project.reporting.outputEncoding>MacRoman</project.reporting.outputEncoding> </properties> <!--Enable snapshots for the built in central repo to direct --> <!--all requests to nexus via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings> 

任何build议,为什么它抱怨?

查看target/checkout/pom.xml文件。 很有可能,trunk或master分支中的pom.xml没有distributionManagement标签。

我得到了同样的消息(“分布式pipe理元素中的POM中未指定存储库元素”)。 我检查了/target/checkout/pom.xml,并根据另一个答案,它真的缺乏<distributionManagement>

事实certificate,问题是在我的主分支 (使用git)的pom.xml中缺less<distributionManagement>

清理完后( mvn release:rollbackmvn cleanmvn release:cleangit tag -d v1.0.0 )我再次运行mvn release ,它工作正常。

您也可以在命令行上覆盖部署存储库: -Darguments=-DaltDeploymentRepository=myreposid::default::http://my/url/releases

两个localSnap的ID都是localSnap ; 这可能不是你想要的,这可能会混淆Maven。

如果不是这样:POM中可能会有更多的repository元素。 searchmvn help:effective-pom的输出,以确保它们的数量和位置符合您的预期。

对我来说,这个东西就像我的神器的缺失版本一样简单 – “1.1-SNAPSHOT”