最近熟悉了下maven打包發布及搭建私服的過程,記錄下此次操作過程。
事前准備
首先新建兩個項目springMVC和yacolWebApp,springMVC提供facade接口,yacolWebApp為客戶端應用
打包過程
在本地是先打包springMVC項目 mvn clean package,默認打包成jar包,
再執行mvn clean install命令,則在/Users/shen/.m2/repository/cn/shen/service-facade/1.0-SNAPSHOT路徑下就會出現相應的jar包,然后在別的需要引用其facade接口的項目yacolwebapp中添加pom引用:
<dependency>
<groupId>cn.shen</groupId>
<artifactId>service-facade</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
則可以引用到相應的facade。
搭建私服
發布項目到私服
需要配置私服地址,現上傳本地搭建的私服,配置如下:
<distributionManagement>
<repository>
<id>deployRelease</id>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
<uniqueVersion>true</uniqueVersion>
</repository>
<snapshotRepository>
<id>deploySnapshot</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
<uniqueVersion>true</uniqueVersion>
</snapshotRepository>
</distributionManagement>
此過程中並沒有修改setting.xml中的地址,只是修改了項目pom文件的地址信息,因為用戶名和密碼均是默認密碼所以不需要做相應的修改
注意在實際需要將修改的模塊發布到私服是使用deploy;
但是使用過程中會報錯,比如報401。需要1.保持setting.xml中server標簽的id取名需要和pom中的保持一致,2.賬戶和密碼正確。

注意需要安裝相應的插件,配置如下(版本應該有關系):
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
上傳之后即可在私服上查看到響應的項目
遇到的問題
./nexus start 注意啟動時出錯,./nexus console 能看到出錯信息,遇到過jdk版本的問題,切換一下jdk版本即可(1.8->1.7)
jdk切換步驟(前提是安裝過多版本的jdk)
打開編輯open ~/.bash_profile
修改export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) 為export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
保存 source ~/.bash_profile
定義<groupId>cn.shen</groupId>和<artifactId>appdomainservice</artifactId>包的名稱時一定要注意重名的問題,一定要注意區分,否則項目名稱一樣的就會沖突,如springMVC和YacolAppWeb兩個項目的<groupId>名都是cn.shen,這會把兩個項目的子moudle都搞在一起,這樣如果兩個項目都用到了domainservice的moudle則會沖突,只能把子moudle的名稱做區分。那么就好像是一個項目,所以不同項目之間的groupId一定要不一樣