我刚刚在我的Windows Tomcat上安装了Nexus 2.7.1并启动并运行了它。我正在尝试使用"maven deploy"命令将快照jar部署到Nexus快照存储库,但出现以下错误。使用 Maven 版本 3.0.5。请指导。
[错误] 无法在项目发布插件 rnd 上执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy):无法部署工件:无法传输工件 com.study:release-plugin-rnd:jar:1.3-20140218.193240-1 从/到快照 (http://my-nexus-server.com:9090/nexus/content/repositories/snapshots): 无法传输文件: http://my-nexus-server.com:9090/nexus/content/repositories/snapshots/com/study/release-plugin-rnd/1.3-SNAPSHOT/release-plugin-rnd-1.3-20140218.193240-1.jar.*返回代码为:401,原因短语:未经授权。-> [帮助 1]*
我的设置.xml和绒球.xml如下所述。
设置.xml
<settings>
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Public Mirror</name>
<url>http://localhost:9090/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<servers>
<server>
<id>nexus-server</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
</settings>
庞.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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.study</groupId>
<artifactId>release-plugin-rnd</artifactId>
<version>1.3-SNAPSHOT</version>
<packaging>jar</packaging>
<name>release-plugin-rnd</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<scm>
<connection>scm:svn:https://my-svn-server/svn/maven-rnd/release-plugin-rnd/trunk</connection>
<developerConnection>scm:svn:https://my-svn-server/svn/maven-rnd/release-plugin-rnd/trunk</developerConnection>
<url>https://my-svn-server/svn/maven-rnd/release-plugin-rnd/trunk</url>
</scm>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://my-svn-server/svn/maven-rnd/release-plugin-rnd/tags</tagBase>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<snapshotRepository>
<id>snapshots</id>
<name>Internal Snapshots</name>
<url>http://my-nexus-server:9090/nexus/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://my-nexus-server:9090/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
</project>
我对镜像功能没有任何经验,但我可以在设置我们的私人公司 nexus 服务器时尝试提供帮助。当您在pom中指定id时,它应该与您在设置中定义的ID.xml匹配。所以你想做的是这样的:
<servers>
<server>
<id>terraframe-releases</id>
<username>myUsername</username>
<password>myPassword</password>
</server>
<server>
<id>terraframe-snapshots</id>
<username>myUsername</username>
<password>myPassword</password>
</server>
<server>
<id>terraframe-thirdparty</id>
<username>myUsername</username>
<password>myPassword</password>
</server>
</servers>
在你的pom中,你引用那些相同的id:
<distributionManagement>
<repository>
<id>terraframe-releases</id>
<name>terraframe-releases</name>
<url>http://terraframe.com:8081/nexus/content/repositories/releases/</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>terraframe-snapshots</id>
<name>terraframe-snapshots</name>
<url>http://terraframe.com:8081/nexus/content/repositories/snapshots/</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
此外,如果您在自己的本地网络上(例如在路由器后面),并且 url http://my-nexus-server:9090
在内部托管(在本地主机或 192.168. 地址上),您很可能无法使用外部域名访问该本地服务器http://my-nexus-server:9090
因此请确保在 localhost 要求它的任何位置指定它。