关于配置和引用Maven算法项目服务的踩坑总结:
[if !supportLists]1. [endif]之前通过mvn clean package -DskipTests打包,手动上传到nexus上,在新工程引用的时候不能自动下载该依赖所依赖的第三方包。
解决方案:直接在pom文件里配置发布地址,配置需要发布到的远程仓库地址,修改pom.xml文件,添加以下配置节点:
<distributionManagement>
<repository>
<id>localhost</id>
<url>http://localhost:8081/nexus/content/repositories/thirdparty/</url>
</repository>
</distributionManagement>
注意:在distributionManagement段中配置的地址,这里是采用nexus作为镜像服务器。如果这个镜像服务器需要用户名和密码,那么还需要在maven的settings.xml文件中做如下配置:
<server>
<id>localhost</id>
<username>admin</username>
<password>admin123</password>
</server>
注意这里配置的server的id必须和pom文件中的distributionManagement对应仓库的id保持一致,maven在处理发布时会根据id查找用户名称和密码进行登录和文件的上传发布。
[if !supportLists]2. [endif]公司仓库地址上传成功,本地则不成功,部署到Nexus时出现的Failed to transfer file错误(400)
解决方案:
关键的是Nexus中Releases仓库默认的Deployment Policy是“Disable Redeploy”,所以无法部署的问题在这个地方,方法是将其修改为“Allow Redeploy”就可以了
[if !supportLists]3. [endif]如果上传相同版本的包,则在新的工程使用时,需要删除本地之前下载过的包然后重新引入,不然不会自动去更新,所以迭代的时候需要修改版本号。
解决方案:
去查看文件目录:(C:\Users\Administrator\.m2\repository\)
对原始包进行删除。
附:
(1)在pom.xml中repositories标签的作用是用来配置maven项目的远程仓库。应用远程仓库的依赖时需要配置对应的仓库的地址去下载。
注:
<repositories>
<repository>
<id>远程仓库唯一标识符</id>
<url>远程仓库的url</url>
</repository>
</repositories>
(2)项目编译打包配置,需要修改pom.xml文件,添加以下配置节点:
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</plugins>
</build>