1、概述css
上一篇文章介紹了Jenkins結合svn來構建jar包,本文介紹另外一種代碼提交的方式git,並結合maven來構建代碼包。java
實驗環境:linux
IP: 10.0.90.27 系統: Centos6.6 x86_64
軟件包:
git
Jenkins 2.9 Tomcat 8.0.36 JDK 8.92 maven 3.3.9 git
2、安裝步驟
web
一、安裝jdkspring
#rpm -ivh jdk-8u92-linux-x64.rpm Preparing... ########################################### [100%] 1:jdk1.8.0_92 ########################################### [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar...
二、安裝tomcatapache
#tar xf apache-tomcat-8.0.36.tar.gz -C /usr/local/ #cd /usr/local/ #ln -sv apache-tomcat-8.0.36 tomcat 啓動 #cd tomcat #./bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. 訪問測試: 在瀏覽器輸入http://10.0.90.27:8080,出現tomcat的默認網頁,表示安裝成功。
三、安裝Jenkins(安裝方式是直接解壓到tomcat中)bootstrap
將jenkins.war包拷貝的/usr/local/tomcat/webapps目錄api
而後再瀏覽器訪問:瀏覽器
http://10.0.90.27:8080/jenkins/ 顯示下面界面
根據提示從/root/.jenkins/secrets/initialAdminPassword文件中獲取密碼,而後繼續,會看到以下界面:
而後就按照默認的選擇(Install suggested plugins),繼續下一步,會看到安裝Plugin的界面:
安裝Plugin的過程會花費一些時間,請耐心等待……
PS:若是一直處於安裝狀態(可能會由於網絡緣由,有些個Plugin安裝不了),能夠刷新一下瀏覽器,若是刷新以後提示你安裝失敗,你能夠點擊提示的「Retry」,繼續。安裝好Plugin以後,會讓你建立一個admin用戶,你能夠自定義以下圖:
也能夠繼續使用admin用戶,以下紅方框中的按鈕(我這裏是建立了一個普通的admin用戶liguang):
建立好以後,點擊「Save and Finish」按鈕,會彈出以下頁面:
而後點擊 「Start using Jenkins」,就會看到安裝好的Jenkins界面了
能夠查看以前安裝了哪些插件,哪些安裝成功了,哪些沒有安裝成功,方法:「系統管理」--「管理插件」,會看到插件的界面,能夠根據狀況操做。
注意:假如你想使用svn來管理代碼,可是svn插件沒有安裝,就會在建立的新項目進行配置的時候,「代碼管理」設置部分顯示爲None,以下:
這個時候,你就須要安裝svn插件了。
四、Jenkins安裝插件
「系統管理」--「管理插件」--「可選插件」,而後在右上角的「過濾」長方框中輸入svn,就會看到不少svn相關的插件,選擇安裝以下的插件便可:
選擇「直接安裝」或者「下載待重啓後安裝」均可以,我這裏選擇第二個,而後會看到以下界面,先是處於「等待」的狀態,過一下子就是「安裝中」的狀態。
安裝好以後,提示以下圖:
而後從新啓動tomcat,刷新瀏覽器,再到「插件管理」查看svn的安裝狀況,以下表示安裝成功:
PS:這時,在到test_app項目中的「源碼管理」部分,就會看到「None」和「Subversion」都存在了!可是不少時候咱們也會用到CVS或者git來拉取代碼,因此須要安裝這2個插件。安裝CVS(CVS Plug-in)和git(Git plugin)插件,方法同樣,須要重啓tomcat生效,安裝完成以後,在項目配置的時候,就能夠看到了,以下:
這樣就有4種方式進行源碼的管理了!
五、查看Jenkins的Global Tool Configuration
「系統管理」---「Global Tool Configuration」,以下圖:
根據提示能夠看出是Jenkins服務器沒有安裝git,找不到git命令,後面會介紹安裝git的方式。
3、配置Jenkins經過git拉取代碼
注:gitlab的安裝配置這裏不介紹了(若是和Jenkins安裝到同一臺服務器,須要注意端口不要衝突了)
一、在Jenkins服務器生成key
#ssh-keygen -t rsa ##不須要設置密碼,一路回車便可 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 5a:f1:2f:5c:78:26:26:0d:a4:43:e7:bf:c8:a0:91:e9 root@localhost.localdomain The key's randomart p_w_picpath is: +--[ RSA 2048]----+ | . o | | . = | | o + | | o . * . | | + . S B + | | . o = = B | | E . o + . | | . | | | +-----------------+
二、在Jenkins服務器安裝git客戶端命令,我這裏直接yum安裝
#yum install git -y 查看版本: #git --version git version 1.7.1
安裝好以後,再到Global Tool Configuration查看,就不會有二.5提示的錯誤了。順便爲其設置一個名稱,Name 設置爲git1.7.1 ,Path to Git executable 保持不變便可。
三、查看gitlab上Project的信息(我這裏用的是以前搭建好的gitlab,地址是10.0.18.173),這裏以server1/CSS項目爲例:
紅方框中給出的是訪問該代碼的方式,咱們用的是git,因此須要配置爲git@10.0.18.173:server1/css.git,也能夠是域名:git@git.test111.com:server1/css.git
四、在Jenkins的項目中配置,以test_app爲例子,
不過配置好以後,遇到了以下的問題:
緣由:根據錯誤提示,發現是沒有權限到gitlab服務器端拉取代碼,須要將Jenkins服務端剛纔生成的id_rsa.pub配置在某一個能夠登陸gitlab用戶的SSH Keys 中,方法以下:
使用一個用戶登陸到gitlab,而且這個用戶對gitlab上的全部項目有讀寫權限,而後添加Jenkins的key
點擊右上方的「Profile settings」,在彈出的頁面再點擊「SSH Keys」,會彈出以下界面:
點擊「Add SSH Key」,自定義Title,將key粘貼到下面的方框中,點擊「Add key」,以下圖:
而後刷新Jenkins頁面,上面三.4出錯的頁面,就不會再報錯了!
PS:若是安裝好Jenkins以後,你配置了普通用戶而且設置了郵箱,添加好key以後,系統會發郵件通知你,內容以下:
五、爲項目添加代碼分支
首先要從gitlab上查看代碼分支,而後在Jenkins的每一個項目中添加分支,以test_app項目爲例子,以下:
添加好以後要apply和save!
PS:每次構建只能配置一個分支!
六、其餘配置:
能夠配置丟棄舊的構建,由於保留太多沒有用。
4、配置Jenkins經過maven打包代碼
一、安裝maven插件,名稱爲:Maven Integration plugin,以下:
而後點擊「直接安裝」,須要等一些時間才能安裝完成,而後重啓tomcat生效!
PS:安裝的時候遇到一個問題,安裝3次都不成功,提示失敗,以下圖:
而後ping域名updates.jenkins-ci.org是不通的,而後換用瀏覽器訪問http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/plugins/maven-plugin/2.13/是能夠訪問的,而後我反覆嘗試了5-6次,最後安裝成功了,無解!!!
二、在Jenkins上安裝maven
#tar xf apache-maven-3.3.9-bin.tar.gz -C /usr/local/ #cd /usr/local/ # ln -sv apache-maven-3.3.9/ maven `maven' -> `apache-maven-3.3.9/' 設置環境變量 #vi /etc/profile #在末尾添加 ##maven MAVEN_HOME=/usr/local/maven export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin 執行source,使設置生效 #source /etc/profile 查看安裝maven的信息 #mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/local/maven Java version: 1.8.0_92, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_92/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "2.6.32-504.el6.x86_64", arch: "amd64", family: "unix"
在Jenkins的web界面配置Maven版本和路徑,選擇「系統管理」--「Global Tool Configuration」,配置爲以下:
而後「Apply」--「Save」
三、使用Maven建立項目
不管是學習語言仍是框架,先來一個Hello World基本上已是套路了,這裏也經過構建一個Hello World項目來了解如何使用Maven。
a、首先經過maven建立helloworld項目
#mvn archetype:create -DgroupId=helloworld -DartifactId=helloworld [INFO] Scanning for projects... Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (4 KB at 0.2 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom (13 KB at 2.0 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/21/maven-parent-21.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/21/maven-parent-21.pom (26 KB at 6.1 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/apache/10/apache-10.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/apache/10/apache-10.pom (15 KB at 6.7 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar (25 KB at 6.5 KB/sec) ……………… ##省略 Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.4/maven-archetype-plugin-2.4.jar (92 KB at 2.3 KB/sec) [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-archetype-plugin:2.4:create (default-cli) @ standalone-pom --- Downloading: ……………… ##省略 Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy/1.8.3/groovy-1.8.3.jar (5394 KB at 7.3 KB/sec) [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 27:02 min [INFO] Finished at: 2016-06-21T19:04:30+08:00 [INFO] Final Memory: 12M/30M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:create (default-cli) on project standalone-pom: Unable to parse configuration of mojo org.apache.maven.plugins:maven-archetype-plugin:2.4:create for parameter #: Cannot create instance of interface org.apache.maven.artifact.repository.ArtifactRepository: org.apache.maven.artifact.repository.ArtifactRepository.<init>() -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginConfigurationException 能夠看到,是有ERROR出現,google尋找緣由,說法不一,而後嘗試了以下方式: 緣由:archetype:create命令已通過期,須要使用 archetype:generate 來進行代替 #mvn archetype:generate -DgroupId=helloworld -DartifactId=helloworld [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> maven-archetype-plugin:2.4:generate (default-cli) > generate-sources @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:2.4:generate (default-cli) < generate-sources @ standalone-pom <<< [INFO] [INFO] --- maven-archetype-plugin:2.4:generate (default-cli) @ standalone-pom --- [INFO] Generating project in Interactive mode ……………… ##信息太多,省略 ……………… 1611: remote -> uk.co.solong:angular-spring-archetype (So Long archetype for RESTful spring services with an AngularJS frontend. Includes debian deployment) 1612: remote -> us.fatehi:schemacrawler-archetype-maven-project (-) 1613: remote -> us.fatehi:schemacrawler-archetype-plugin-command (-) 1614: remote -> us.fatehi:schemacrawler-archetype-plugin-dbconnector (-) 1615: remote -> us.fatehi:schemacrawler-archetype-plugin-lint (-) Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 799: Choose org.apache.maven.archetypes:maven-archetype-quickstart version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 6: Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.jar Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.jar (7 KB at 3.7 KB/sec) Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.pom Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.pom (2 KB at 4.1 KB/sec) [INFO] Using property: groupId = helloworld [INFO] Using property: artifactId = helloworld Define value for property 'version': 1.0-SNAPSHOT: : ##執行到此處中止了,回車便可 [INFO] Using property: package = helloworld Confirm properties configuration: groupId: helloworld artifactId: helloworld version: 1.0-SNAPSHOT package: helloworld Y: : ##輸入Y,回車 [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: basedir, Value: /root [INFO] Parameter: package, Value: helloworld [INFO] Parameter: groupId, Value: helloworld [INFO] Parameter: artifactId, Value: helloworld [INFO] Parameter: packageName, Value: helloworld [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: /root/helloworld [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 11:33 min [INFO] Finished at: 2016-06-22T10:03:37+08:00 [INFO] Final Memory: 14M/49M [INFO] ------------------------------------------------------------------------ b、在當前目錄查看helloworld項目生成的目錄,以下: #tree helloworld/ helloworld/ ├── pom.xml └── src ├── main │ └── java │ └── helloworld │ └── App.java └── test └── java └── helloworld └── AppTest.java 7 directories, 3 file
其中src/main/java是源碼目錄,src/test/java是測試文件目錄,到這些目錄能夠看到App.java中已經寫好了一個Hello World程序,而AppTest中是Junit單元測試的代碼,至於pom.xml,則給出了項目的一些基本信息以及依賴關係。
看一下App.java和AppTest.java內容:
#cat App.java package helloworld; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } } #cat AppTest.java package helloworld; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase { /** * Create the test case * * @param testName name of the test case */ public AppTest( String testName ) { super( testName ); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite( AppTest.class ); } /** * Rigourous Test :-) */ public void testApp() { assertTrue( true ); } }
再看一下pom.xml文件
#cat pom.xml <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"> <modelVersion>4.0.0</modelVersion> <groupId>helloworld</groupId> <artifactId>helloworld</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>helloworld</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
解釋:在pom.xml文件中,首先描述了項目的定義,groupId:artifactId:version:packaging這個四元組可以惟一標記一個項目。咱們不只能夠用這個四元組來標記咱們的項目,也能夠用來標記其它的項目,好比用來描述項目依賴關係。properties中定義了項目的屬性,也能夠在這裏定義變量並在其它的地方引用。至於最後的dependencies,則是描述了項目的依賴關係,Maven會根據依賴關係自動下載相應的文件並在編譯時使用。在大型項目開發中,每每會將其分紅若干個子項目,每一個子項目都有着本身的的pom.xml,它們與父pom.xml之間至關於繼承的關係。能夠說,pom.xml文件的配置是整個Maven的核心重點,也是學習Maven過程當中須要詳細瞭解的內容。這裏只給出了最簡單的配置樣例,詳細瞭解能夠查看官方文檔。
c、編譯並運行helloworld項目(須要聯網,由於Maven會自動下載依賴包。)
#cd /root/helloworld/ #mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building helloworld 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: ……………… ##信息太多,此處省略 Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar (26 KB at 23.5 KB/sec) ------------------------------------------------------- T E S T S ------------------------------------------------------- Running helloworld.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ helloworld --- Downloading: ……………… ##此處省略 [INFO] Building jar: /root/helloworld/target/helloworld-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:46 min [INFO] Finished at: 2016-06-22T10:31:06+08:00 [INFO] Final Memory: 16M/40M [INFO] ------------------------------------------------------------------------ 能夠看到打包成功了!!
注:下載的依賴包會保存在~/.m2/repository文件夾中,打開這個文件夾,咱們會發現裏面的包正是按前面所說的四元組目錄結構進行存儲的。Maven在依賴一個jar包時會先去本地庫查找,若是沒找到就會從網上下載。固然,並非全部的包都能從網上下載到,好比咱們本身開發的jar包,這時,咱們就能夠用mvn install命令將一個項目安裝到本地倉庫。
打包成功後咱們會發現項目中多了一個target文件夾,目錄結構以下
#tree helloworld/ helloworld/ ├── pom.xml ├── src │ ├── main │ │ └── java │ │ └── helloworld │ │ └── App.java │ └── test │ └── java │ └── helloworld │ └── AppTest.java └── target ├── classes │ └── helloworld │ └── App.class ├── helloworld-1.0-SNAPSHOT.jar ├── maven-archiver │ └── pom.properties ├── maven-status │ └── maven-compiler-plugin │ ├── compile │ │ └── default-compile │ │ ├── createdFiles.lst │ │ └── inputFiles.lst │ └── testCompile │ └── default-testCompile │ ├── createdFiles.lst │ └── inputFiles.lst ├── surefire-reports │ ├── helloworld.AppTest.txt │ └── TEST-helloworld.AppTest.xml └── test-classes └── helloworld └── AppTest.class 20 directories, 13 files
能夠看到,在package過程當中,maven完成了編譯、測試代碼,生成測試報告,生成jar包等一系列工做。
d、手動運行jar包查看結果
#cd /tmp #java -cp /root/helloworld/target/helloworld-1.0-SNAPSHOT.jar helloworld.App Hello World!
e、Maven經常使用命令介紹:
Maven的命令很是多,學習命令首先要了解Maven的生命週期。
Maven首先會驗證並處理引用資源,以後進行項目編譯,若是沒有聲明跳過測試,也會編譯測試代碼並進行測試、以成測試報告。最後,Maven會將編譯好的內容進行打包,用於發佈。Maven命令與Maven的生命週期有着對應的關係,一個命令也常常會包含多個生命週期,好比mvn package會完成以上全部步驟。
這裏列舉幾個經常使用的命令:
mvn compile 編譯項目 mvn test 編譯運行單元測試 mvn package 打包(jar or war) mvn install 將項目安裝到本地倉庫 mvn clean 清空項目 mvn eclipse:eclipse 生成eclipse工程
Maven安裝配置部分參考連接:http://www.c4fun.cn/blog/2014/10/10/maven-study/
5、經過Jenkins平臺,自動構建jar或者war格式的代碼包
一、首先測試拉取代碼狀況
前面已經在Jenkins配置了一個test_app項目,如今測試構建的狀況,選擇項目名,以下:
而後在彈出頁面的左側選擇「當即構建」,會出現一個進度條,而後點進去,在彈出頁面的左側選擇「Console Output」,會看到整個構建過程輸出的log,太多了,不能徹底貼出來,不過最後是構建失敗了,以下圖:
根據錯誤信息初步判斷是一些jar包沒有下載成功或者不存在致使的,先放這裏,待會再介紹如何解決這個問題。
到Jenkins服務器查看,代碼是否已經從git拉取到本機了
#cd /root/.jenkins/workspace ##此時你會看到test_app目錄已經存在了 #ll test_app ##代碼也已經拉取到本地了 total 16 drwxr-xr-x 2 root root 4096 Jun 21 20:58 build -rw-r--r-- 1 root root 5922 Jun 21 20:58 pom.xml drwxr-xr-x 3 root root 4096 Jun 21 20:58 src
二、解決第1步出現的問題
這裏涉及到了maven鏡像中央倉庫,若是安裝好maven以後,沒有設置中央倉庫(註釋掉的),因此沒法獲取到須要的jar包,就會報錯了
設置倉庫地址的配置文件在maven的安裝目錄中,叫settings.xml #cd /usr/local/maven/conf #cat settings.xml | grep url -A 12 -B 12 | server for that repository. |--> <mirrors> <!-- mirror ##是註釋掉的 | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url> ##並且此處的地址也是沒法訪問的 </mirror> --> </mirrors> <!-- profiles
那須要如何解決這個問題呢,有幾種方式:
第一種是使用互聯網開放的倉庫地址:
a、網上看到的一個開放的倉庫地址是國外google的,以下:
<mirrors> <mirror> <id>google-maven-central</id> <name>Google Maven Central</name> <url>https://maven-central.storage.googleapis.com</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
因而決定測試一下,將settings.xml文件修改成以下:
#cat settings.xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- <localRepository>D:\bisoft\tools\maven3\repository</localRepository> --> <pluginGroups> <!-- <pluginGroup>org.mortbay.jetty</pluginGroup> <pluginGroup>org.codehaus.cargo</pluginGroup> --> </pluginGroups> <proxies> </proxies> <servers> <server> <id>releases</id> <username>deployment</username> <password>deployment</password> </server> <server> <id>snapshots</id> <username>deployment</username> <password>deployment</password> </server> </servers> <mirrors> <mirror> <id>google-maven-central</id> <mirrorOf>central</mirrorOf> <url>https://maven-central.storage.googleapis.com</url> ##改成google倉庫 </mirror> </mirrors> <profiles> <profile> <id>google-maven-central</id> <repositories> <repository> <id>google-maven-central</id> <name>google-maven-central</name> <url>https://maven-central.storage.googleapis.com</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>google-maven-central</id> <name>google-maven-central</name> <url>https://maven-central.storage.googleapis.com</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>google-maven-central</activeProfile> </activeProfiles> </settings> </settings>
而後測試構建項目,不過結果是失敗的,緣由你們估計已經知道了,在國內google是被牆的,因此沒法獲取一些jar包,錯誤提示以下:
因此這種方式行不通,就放棄了!
b、國內的一個開源中國的Maven鏡像倉庫地址,以下:
<mirrors> <mirror> <id>nexus-osc</id> <mirrorOf>*</mirrorOf> <name>Nexus osc</name> <url>http://maven.oschina.net/content/groups/public/</url> </mirror> </mirrors>
通過測試也是不行的,網上說有時還能夠,有時候不行,就是不穩定!
此處參考連接:http://www.linuxidc.com/Linux/2016-01/127012.htm
第二種是本身構建中央倉庫,本身調用,下一篇文章中再介紹。
初學,不足之處請多多指出,謝謝!