这是第一次使用 nexus 私服上传本身的 jar 包到仓库里,各类不懂各类搜索,百度完了又谷歌,终于大概了解了个流程。apache
大体上能够分为 mvn deploy 和 mvn deploy:deploy-file。bash
mvn deploy:deploy-file -DgroupId=com.jpay -DartifactId=common-payment-sdk -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=./target/common-payment-sdk-0.0.1.jar -Durl=http://10.100.86.153:8081/repository/maven-snapshots/ -DrepositoryId=nexus-snapshots
mvn deploy:deploy-file -DgroupId=com.jpay -DartifactId=common-payment-sdk -Dversion=0.0.1 -Dpackaging=jar -Dfile=./target/common-payment-sdk-0.0.3.jar -Durl=http://10.100.86.153:8081/repository/maven-releases/ -DrepositoryId=nexus-release
复制代码
如今来讲说我所遇到的问题,如今拿 jpay 这个整合支付来测试一下,常常一番努力以后,终于把 jar 包上传到 nexus 里了,这时想着应该要事成了,把本地 ~/.m2/repository/com/jpay 这个依赖删除,试试看有没有从私服上 download 依赖包,发现 mvn install 时彻底没有 download 的步骤,没理由啊~app
因而指定一下私服地址,在 pom.xml 里增长:maven
<repositories>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://10.100.86.153:8081/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
复制代码
再执行一次 mvn install,依然没有反应,没有 download,而后编译错误提示找不到 jpay 依赖包。这时我再想,会不会是应该打包的时候把全部的第三方依赖都打包进去呢?因而,我又在 jpay 的 pom.xml 里增长了个插件配置:测试
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!-- 此处指定main方法入口的class -->
<mainClass></mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
复制代码
再次打包,本来160K 的 jar 包变成了 26M 了,再次试试打包项目,终于经过了。url
因而我又试着去看看别人的 jar 包会不会也把全部依赖打包进去呢?进去 ~/.m2/repository 找别人的包一看,都好小哦,再看看 pom.xml 一看,不少 dependency 在里面,我打开 nexus 进去找到我上传的包看看 pom.xml 发现只有简单的几行:spa
<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.jpay</groupId>
<artifactId>payment-sdk</artifactId>
<version>0.0.1</version>
</project>
复制代码
我插~~~问题就是出在这里,确定是我打包的姿式不对,因而我在 jpay 的 pom.xml 里加上分发管理配置:插件
<distributionManagement>
<repository>
<id>nexus-release</id>
<name>Nexus Releases Repository</name>
<url>http://10.100.86.153:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshots Repository</name>
<uniqueVersion>false</uniqueVersion>
<layout>legacy</layout>
<url>http://10.100.86.153:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
复制代码
而后 mvn deploy 执行发布,看见有上传到 nexus success 成功的字样,去 nexus 查看一下 pom.xml 文件,终于看到有 dependency 在里面了。code
删除本地 ~/.m2/repository/com/jpay 再打包一次项目,终于能从私服上拉取到依赖包了。xml
事到这里暂告一段落,改天有空再肯定一下 deploy-file 上传是否是应该用 mvn package 后连同 pom 一块上传。