maven本地構件分發到遠端倉庫
阿新 • • 發佈:2019-02-20
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裡面了。