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:rollback
, mvn clean
, mvn release:clean
, git 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”