一、手动使用maven发布到nexus仓库
1、本地开启nexus2服务
nexus的安装配置略
浏览器访问:http://127.0.0.1:8888/nexus
2、maven安装包conf/目录的settings.xml
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>asdfghjkl</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>asdfghjkl</password>
</server>
<server>
<id>site</id>
<username>deployment</username>
<password>asdfghjkl</password>
</server>
</servers>
3、maven module的pom.xml文件中配置发布仓库
<distributionManagement>
<repository>
<id>releases</id>
<url>http://127.0.0.1:8888/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8888/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
<server>中的<id>要和<repository>、<snapshotRepository>的<id>一致,maven在发布时,会根据此id来查找相应的用户名密码进行登录验证并上传文件,id不一致会导致发布失败!!!
url都是nexus相应仓库的链接地址,这一步做完之后,已经完成了发布所需要的基本配置。
maven会判断版本后面是否带了-SNAPSHOT,如果带了就发布到snapshots仓库,否则发布到release仓库。
3、通过Profile参数控制发布
<groupId>cn.shary</groupId>
<artifactId>fast</artifactId>
<packaging>jar</packaging>
<version>${project.deploy.version}</version>
<properties>
<java.version>1.8</java.version>
<project.deploy.version>1.0.0-SNAPSHOT</project.deploy.version>
</properties>
<profiles>
<profile>
<id>release</id>
<properties>
<project.deploy.version>1.0.0</project.deploy.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-sources</id><!--附上源码-->
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>snapshot</id>
<properties>
<project.deploy.version>0.9.9-SNAPSHOT</project.deploy.version>
</properties>
</profile>
</profiles>
配置完成后就可以在源码工程根目录下执行命令行:
mvn deploy -P release
mvn deploy -P snapshot
maven会自动将对应prifile id里面的project.deploy.version替换全局project.deploy.version属性,然后执行deploy
说明:通过maven profile变量project.deploy.version来控制需要发布的版本,用命令mvn deploy -P release,发布fastdao的1.0.0版本到releases库。如果使用命令mvn deploy,则默认使用 1.0.0-SNAPSHOT版本号,将发布fastao的1.0.0-SNAPSHOT版本到snapshots库。
当然也可以把project.deploy.version当作环境变量来使
使用maven提供的命令去统一更改
mvn versions:set -DnewVersion=1.0.0
nexus配置镜像:
1. 点击 repositories
2. nexus3 点击 create repository-选中maven2(proxy)
nexus2 点击 Add-选中Add Proxy Repository
3. 设置镜像参数
如:
阿里云nexus仓库URL: http://maven.aliyun.com/nexus/content/groups/public
id:nexus-aliyun
name:nexus-aliyun
4. 设置顺序
Repositories
nexus2:Public Repositories-Configuration
nexus3:maven-public
5. 配置settings.xml
<!-- 不使用nexus,maven配置阿里云加速 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<!-- 使用nexus 配置镜像 -->
<mirror>
<id>nexus-central</id>
<mirrorOf>*</mirrorOf>
<name>Nexus Central</name>
<url>http://192.168.3.5:8888/nexus/repository/maven-public/</url>
</mirror>