1. 程式人生 > >linux下安裝nexus repository及Intellij Idea集成私有maven

linux下安裝nexus repository及Intellij Idea集成私有maven

files usm codehaus ima sna rem 依賴 技術分享 active

前段日子公司搞java項目,使用nexus repository搭建了私有maven庫,現在把原來的私有nuget也遷到nexus repository上了,下面介紹下搭建流程:

https://help.sonatype.com/display/NXRM3/Download

官方下載tar包 當前 nexus-3.8.0-02-unix.tar.gz

使用xshell的rz命令上傳到linux服務器

解壓縮文件:tar -zxvf nexus-3.8.0-02-unix.tar.gz (會解壓出兩個文件夾)

技術分享圖片

進入解壓後文件 cd nexus-3.8.0-02

編輯配置文件:vi etc/nexus-default.properties

配置文件中更改端口號(默認端口號8081):

application-port=5006

(如果更改工作路徑,修改nexus-work,如 nexus-work=${user.home}/sonatype-work/nexus

進入bin文件夾:cd bin

啟動nexus服務: ./nexus start

查看服務狀態: ./nexus status

訪問地址ip:5006,出現下面界面:

技術分享圖片

默認用戶:admin admin123

登陸後可以創建不同類型倉儲,關於nexus repository倉儲說明如下:

一、component name解釋:

(1)maven-central:maven中央庫,默認從https://repo1.maven.org/maven2/拉取jar

(2)maven-releases:私庫發行版jar

(3)maven-snapshots:私庫快照(調試版本)jar

(4)maven-public:倉庫分組,把上面三個倉庫組合在一起對外提供服務,在本地maven基礎配置settings.xml中使用。

二、Nexus默認的倉庫類型有以下四種:

(1)group(倉庫組類型):又叫組倉庫,用於方便開發人員自己設定的倉庫

(2)hosted(宿主類型):內部項目的發布倉庫(內部開發人員,發布上去存放的倉庫)

(3)proxy(代理類型):從遠程中央倉庫中尋找數據的倉庫(可以點擊對應的倉庫的Configuration頁簽下Remote Storage Location屬性的值即被代理的遠程倉庫的路徑)

(4)virtual(虛擬類型):虛擬倉庫

三、Policy(策略):表示該倉庫為發布(Release)版本倉庫還是快照(Snapshot)版本倉庫

四、Public Repositories下的倉庫:

(1)3rd party: 無法從公共倉庫獲得的第三方發布版本的構件倉庫,即第三方依賴的倉庫,這個數據通常是由內部人員自行下載之後發布上去

(2)Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫

(3)Central: 用來代理maven中央倉庫中發布版本構件的倉庫

(4)Central M1 shadow: 用於提供中央倉庫中M1格式的發布版本的構件鏡像倉庫

(5)Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫

(6)Releases: 內部的模塊中release模塊的發布倉庫,用來部署管理內部的發布版本構件的宿主類型倉庫;release是發布版本

(7)Snapshots:發布內部的SNAPSHOT模塊的倉庫,用來部署管理內部的快照版本構件的宿主類型倉庫;snapshots是快照版本,也就是不穩定版本

  所以自定義構建的倉庫組代理倉庫的順序為:Releases,Snapshots,3rd party,Central。也可以使用oschina放到Central前面,下載包會更快。

Intellij Idea 集成私有maven:

找到maven的配置文件setting.xml( 在idea的 File 》Setting 中 )操作如圖:

技術分享圖片

( 如果上圖路徑下沒有配置setting.xml文件,可以在idea安裝過路徑的plugins\maven\lib\maven3\conf中拷貝一個過去,

本人電腦在C:\Program Files\JetBrains\IntelliJ IDEA 2017.3.2\plugins\maven\lib\maven3\conf中 )

setting.xml中增加如下配置:

<servers>

 <server>

<id>nexus</id>

<username>admin</username>

<password>admin123</password>

</server>

</servers>

使用idea打開或新建項目,在項目的pom.xml文件中增<project></project>節點下增加如下配置:

//代理repository

<repositories>

<repository>

<id>maven-central</id>

<name>maven-central</name>

<url>http://ip:port/repository/maven-central/</url>

<snapshots>

<enabled>true</enabled>

</snapshots>

<releases>

<enabled>true</enabled>

</releases>

</repository>

</repositories>

需要將源碼上傳到maven的話,在項目的pom.xml文件中增<project></project>節點下增加如下配置:

//jar包發布repository

<distributionManagement>

<snapshotRepository>

<id>nexus</id>

<name>Nexus Snapshot</name>

<url>http://ip:port/repository/maven-snapshots/</url>

</snapshotRepository>

<repository>

<id>nexus</id>

<name>Nexus Release</name>

<url>http://ip:port/repository/maven-releases/</url>

</repository>

//網站信息

<!--<site>

<id>nexus</id>

<name>Nexus Sites</name>

<url>dav:http://ip:port/repository/maven-snapshots/</url>

</site>-->

</distributionManagement>

<build>

<plugins>

//上傳源碼插件

<plugin>

<artifactId>maven-source-plugin</artifactId>

<version>2.1</version>

<configuration>

<attach>true</attach>

</configuration>

<executions>

<execution>

<phase>compile</phase>

<goals>

<goal>jar</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

註意:

setting.xml和pom.xml中的id節點值必須一致,

pom.xml頭部文件中version節點的值中含有SNAPSHOT時maven會認為是快照版本,發布到maven-snapshots倉庫,

不含則認為是release版本,發布到maven-releases倉庫

配置完成後就可以使用idea發布jar到私有倉庫或者拉取jar了,打開idea下maven工具方式如如下圖:

技術分享圖片

添加Maven Project視圖後在idea右側會顯示工具界面,點擊相應按鈕即可完成操作,如圖:

技術分享圖片

PS:idea創建maven項目時更改默認jdk版本為1.8方法如下:

修改maven的setting.xml文件,添加如下:

<profile>

<id>jdk-1.8</id>

<activation>

<activeByDefault>true</activeByDefault>

<jdk>1.8</jdk>

</activation>

<properties>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

</properties>

</profile>

重啟idea後生效。

linux下安裝nexus repository及Intellij Idea集成私有maven