Windows下maven私服Nexus搭建及使用

項目即將開始進行重構,準備從之前的單體應用從新重構爲基於spring cloud的微服務應用。那麼問題來了,若是將各類工具類都冗餘到每一個微服務中,後期維護就特別難受,想着把工具類、業務模塊、數據庫訪問等抽出來成獨立的模塊,每一個服務去引入便可。基於maven的架構,小編首先想到了nexus,今天就跟着小編一塊兒來玩玩Nexus的搭建及簡單實用吧!spring

Nexus實際上是商業收費的,可是它其實也有開源的版本,咱們下載Nexus Repository Manager OSS 3.x數據庫

1、Nexus下載及安裝

  • 一、下載地址:https://www.sonatype.com/download-oss-sonatype

下載完成以後大概就是這個樣子的,我們以windows爲例,以下圖:apache

)

  • 二、修改Nexus默認端口號

移步至etc/目錄下,會有一個叫default-nexus.properties文件,修改其配置項的端口號便可,默認端口號是8081,配置以下:windows

application-port=8084瀏覽器

  • 三、安裝Nexus

Nexus能夠在命令行直接啓動,也能夠被安裝成一個服務,cmd移步至安裝目錄下,輸入nexus.exe -help,回車以下:bash

其中install,uninstall兩個爲服務安裝與卸載命令,startstop爲服務啓停命令,咱們能夠鍵入nexus.exe install將nexus安裝成爲一個windows服務,而後nexus.exe start將其啓動便可。網絡

  • 四、打開首頁進行配置

若是你的端口沒有改動,則默認是8081端口,在瀏覽器輸入http://ip:port/便可進入首頁。以下圖:架構

點擊右上角的sign in去登陸,Nexus默認有一個帳號是admin,密碼是admin123,進入以後能夠修改密碼。app

登陸成功以後,進去這個頁面,將中央倉庫的遠程代理地址改成阿里雲鏡像地址。maven

爲何要修改遠程代理地址呢?由於默認的遠程倉庫地址是maven中央倉庫,若是遇到網絡很差會很是的慢,再者是由於咱們搭建了私服,後面項目引入jar包的原理就變成:[項目]->[私服地址]->[阿里雲鏡像地址]

問題:是否是項目引入jar文件的時候都會走[阿里雲鏡像地址]?答案是否認的,只有當你的私服不存在項目須要的jar文件時,私服纔會去你配置的代理地址去下載項目須要jar文件。固然了,nexus會備份從遠程倉庫拉取的包,保存在本身的center倉庫中。

2、項目maven配置

之前咱們項目沒有鏈接私服的時候,咱們本地的settings.xml文件可能會加上這個配置,提升速度。

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
</mirror>
複製代碼

那麼,若是配置了,如今請你把它刪掉,換成下面的配置:

<mirror>
	  <id>public</id>      
	  <mirrorOf>central</mirrorOf>
	  <name>central repository</name>
	  <url>http://192.168.1.116:8084/repository/maven-public/</url>
</mirror>
複製代碼

這樣表示會從私服拉取jar文件,固然啦,咱們上面在私服配置了遠程代理地址,本質上若是私服沒有你想要的jar文件的話,仍是會去阿里雲上下載的。

接着在settings.xml文件中增長下面配置:

<profile>
    <id>nexusProfile</id>
    <repositories>
        <repository>
            <id>nexus</id>
            <name>nexus</name>
            <url>http://192.168.1.116:8084/repository/maven-central/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>

<activeProfiles>
    <activeProfile>nexusProfile</activeProfile>
</activeProfiles>

<server>
    <id>releases</id> <!-- 記爲   id1-->
    <username>admin</username>
    <password>******</password>
</server>
<server>
    <id>snapshots</id>  <!-- 記爲   id2-->
    <username>admin</username>
    <password>******</password>
</server>
複製代碼

最後在項目的pom.xml文件中,新增下面配置:

<distributionManagement>
    <repository>
    	<id>releases</id>
    	<name>User Project Release</name>
    	<url>http://192.168.1.116:8084/repository/maven-releases/</url>
    </repository>
    
    <snapshotRepository>
    	<id>snapshots</id>
    	<name>User Project SNAPSHOTS</name>
    	<url>http://192.168.1.116:8084/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>
複製代碼

此處2個id要和上面的id一、id2保持一致。再運行mvn deploy -e便可完成將包上傳至私服。

3、maven打包插件

<build>
    	<plugins>
    		<plugin>
    			<groupId>org.apache.maven.plugins</groupId>
    			<artifactId>maven-jar-plugin</artifactId>
    			<version>2.4</version>
    			<configuration>
    				<archive>
    					<!-- 生成的jar中,包含pom.xml和pom.properties這兩個文件 -->
    					<addMavenDescriptor>true</addMavenDescriptor>
    					<manifest>
    						<!-- 爲依賴包添加路徑, 這些路徑會寫在MANIFEST文件的Class-Path下 -->
    						<addClasspath>true</addClasspath>
    						<!-- 這個jar所依賴的jar包添加classPath的時候的前綴,若是這個 jar自己和依賴包在同一級目錄,則不須要添加 -->
    						<classpathPrefix>lib/</classpathPrefix>
    						<!-- jar啓動入口類 -->
    						<mainClass>com.dl.middleware.bocimmid.BocimApplication</mainClass>
    					</manifest>
    				</archive>
    				<!-- jar包的位置 -->
    				<outputDirectory>${project.build.directory}</outputDirectory>
    				<includes>
    					<!-- 打jar包時,只打包class文件 -->
    					<!-- 有時候可能須要一些其餘文件,這邊能夠配置,包括剔除的文件等等 -->
    					<include>**/*.class</include>
    				</includes>
    			</configuration>
    		</plugin>
    		<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>    
複製代碼

4、技巧

  • 一、maven子模塊<parent>標籤必須指定<version>,那麼每次子模塊版本更新豈不是很麻煩,可使用mvn versions:set -DnewVersion=0.0.2-SNAPSHOT進行版本控制
相關文章
相關標籤/搜索