Maven - 使用distributionManagement
分发构件到仓库repositories
稍微大一点的项目开发过过程中都会诞生各种各样的轮子组件,通过Maven的包管理功能可以很方便的在项目pom.xml
中对这些轮子组件进行依赖管理。
本地调试的时候可以直接mvn install
将组件安装到本地的Maven仓库中,即.m2
文件目录中,但是本地Maven仓库中的组件只能供当前用户使用,要将组件安装到局域网或者公网的远程Maven仓库中才能让大家都访问到。修改.m2
目录下面的settings.xml
和当前项目中的pom.xml
配置后,再使用mvn deploy
命令可将组件安装到远程Maven仓库。
1.首先是修改.m2
目录中的settings.xml
,添加servers
相关配置,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<mirrors>
...
</mirrors>
<profiles>
...
</profiles>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>password</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
</settings
2.接下来是修改需要被分发到远程仓库的项目中的pom.xml
,如下:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<properties>
...
</properties>
<dependencies>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>releases</id>
<url>http://your-domain-name/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://your-domain-name/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
3.然后是到项目所在目录命令行执行 mvn deploy
即可把本地组件分发到远程仓库上去供其他人使用了。
当然,前提是你已经配置好了自己的nexus
私服 :)
4.最后在需要依赖该组件的项目的pom.xml
里面像添加其他开源第三方组件一样添加自己的组件就开源了!
<dependencies>
<!-- jsonrpc4j -->
<dependency>
<groupId>com.github.briandilley.jsonrpc4j</groupId>
<artifactId>jsonrpc4j</artifactId>
<version>${jsonrpc4j.version}</version>
</dependency>
<dependency>
<groupId>your-groupId</groupId>
<artifactId>your-artifactId</artifactId>
<version>version</version>
</dependency>
</dependencies>
PS. 其实也可以将
settings.xml
中的server
认证信息放到pom.xml
中,但是一般pom.xml是其他人可见的,而settings.xml是自己本地才知道的,为了信息安全就放settings.xml里面了。