Maven的下載,安裝,配置,測試,初識以及Maven私服


1:Maven目錄分析
    bin:含有mvn運行的腳本
    boot:含有plexus-classworlds類加載器框架
    conf:含有settings.xml配置文件
    lib:含有Maven運行時所需要的java類庫
    Settings.xml 中默認的用戶庫: ${user.home}/.m2/repository[通過maven下載的jar包都會存儲到指定的個人倉庫中]
    Maven默認倉庫下載地址在: maven的lib目錄下maven-model-builder-3.0.4.jar的pom.xml中
2:創建目錄結構:
  Hello
   --src   
   -----main
   ----------java       --用來存放Java文件
   ----------resources   --用來存放資源文件
   -----test
   ---------java        --用來存放測試的Java文件
   ---------resources
   --target           --項目輸出位置,編譯完畢后自動生成
   --pom.xml        -- 項目對象模型的描述 ,它是maven配置的核心
3:建立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">
  <!-- 當前pom的版本號 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- groupId: 當前jar所屬的命名空間 -->
  <groupId>cn.bie.maven</groupId>
  <!-- 當前項目模塊名稱 -->
  <artifactId>Hello</artifactId>
  <!-- 當前項目的版本, SNAPSHOT鏡像版 -->
  <version>0.0.1-SNAPSHOT</version>
    <!-- 當前模塊需要依賴的相關jar包,也稱為依賴管理, 所有被依賴的包都是通過"坐標"定位的 -->
    <dependencies>
        <!-- 需要依賴junit 通過 groupId+artifactId+version來查找,如果本地沒有則到中央倉庫下載 -->
        <dependency>
            <!-- 當前jar所屬的命名空間 -->
            <groupId>junit</groupId>
            <!-- 依賴的項目模塊的名稱 -->
            <artifactId>junit</artifactId>
            <!-- 依賴的版本號 -->
            <version>4.9</version>
            <!-- 依賴的范圍, 有 test compile privlege。test依賴的jar包的使用范圍,當測試的時候使用該jar包,正式發布,刪除這個 -->
            <scope>test</scope>
        </dependency>        
    </dependencies>
</project>
4:Maven核心概念:
  4.1:Maven插件
    Maven的核心僅僅定義了抽象的生命周期,具體的任務都是交由插件完成的每個插件都能實現多個功能,每個功能就是一個插件目標
    Maven的生命周期與插件目標相互綁定,以完成某個具體的構建任務, Maven的插件在: .m2\repository\org\apache\maven\plugins
  4.2:Maven坐標
    類似在平面幾何中坐標(x,y)可以標識平面中唯一的一點, Maven世界擁有大量構建,我們需要找一個用來唯一標識一個構建的統一規范
    擁有了統一規范,就可以把查找工作交給機器
      groupId:定義當前Maven項目隸屬項目  (實際對應JAVA的包的結構, 是main目錄里java的目錄結構)
      artifactId:定義實際項目中的一個模塊(項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱)
      version:定義當前項目的當前版本
  4.3:Maven倉庫
    何為Maven倉庫:用來統一存儲所有Maven共享構建的位置就是倉庫
    Maven配置jar包的路徑為:groupId/artifactId/version/artifactId-version
    本地倉庫(~/.m2/repository/):每個用戶只有一個本地倉庫
    中央倉庫(Maven默認的遠程倉庫):Maven默認的遠程倉庫下載地址為:http://repo1.maven.org/maven2
    私服:是一種特殊的遠程倉庫, 它是架設在局域網內的倉庫, 主要是為了團隊協作開發
    鏡像:用來替代中央倉庫, 速度一般比中央倉庫快
  4.4:軟件構建生命周期,maven軟件構建的生命周期
      清除--> 編譯-->測試-->報告-->打包(jar\war)-->安裝-->部署。
     maven生命周期命令插件(命令:mvn clean):clean--compile--test--package--install-deploy。
     maven坐標:maven通過坐標的概念來唯一標識jar包或者war包

 1:Maven官網:http://maven.apache.org/

   Maven遠程倉庫:http://search.maven.org/

2:Maven是一個采用純Java編寫的開源項目管理工具,Maven采用了一種被稱之為Project Object Model(POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的配置文件中。通過該文件Maven可以管理項目的整個生命周期,包括,清除,編譯,測試,報告,打包,部署等等。目前,Apache下絕大數項目都已經采用Maven進行管理,而Maven本身還支持多種插件,可以很方便的控制項目,開發人員的主要任務應該是關注商業邏輯並去實現它,而不是把時間浪費到在學習如何在不同的環境中去依賴jar包,項目部署等等。Maven正是為了將開發人員從這些任務中解脫出來而誕生的。

3:Maven能夠做什么???

  jar的聲明式依賴性管理;

  項目自動構建,項目發布;

4:Maven的下載,安裝,配置,如下所示:

  4.1:百度搜索Maven,然后找到Maven的官網,即Apache的官網:

    找到Download,然后找到下圖箭頭所示的apache-maven-3.5.0-bin.zip;  

  4.2:下載完成之后直接找到一個適合的目錄解壓縮即可,然后找到maven的bin目錄,如下所示,復制一下,然后在你的電腦里面的環境變量里的path配置一下,如在path的后面加上;G:\baidu\maven\apache-maven-3.5.0\bin即可;記住前面那個英文分號哈。還需要配置的就是JAVA_HOME,這個之前配置jdk的話應該是配置的,如果沒配置,就配置一下,這個里面是jdk的路徑,如:E:\Android_java_resouce\jdk1.7

  4.3:上面配置好之后驗證一下maven是否配置成功即可,在命令行測試maven的版本,如:mvn -version;出現如下所示即可;

  4.4:這里需要聲明的是,Eclipse配置Maven需要看看Eclipse的版本,最新版的Eclipse已經集成了Maven,所以不再需要安裝Maven插件了,直接使用即可,這里簡單說一下;

  4.4.1:首先打開Eclipse(Mars版本),然后選擇Window--->Preferences--->Maven

  4.4.2:然后選擇installations--->Add--->Directory

   4.4.3:點擊Directory,選擇Maven解壓縮的路徑,如下演示所示:然后點擊finish即可。

   4.4.4:之后將剛才添加的打上對號,點擊apply,然后點擊ok即可。

   4.4.5:這里說明一點,因為開始java使用的是jdk外面的jre,但是出錯了,這里改成jdk1.7文件里面的jre即可。如下所示:

      Window--->Preferences--->Java--->Installed JREs--->Add--->Standard VM

    4.4.6:點擊Standard VM之后出現如下所示的,點擊Directory,之后選擇jdk1.7以及以上的目錄,選擇Finish即可。 

設置User setting,如下所示,在eclipse的preferences——>maven—–>user settings中有兩個配置:

global settings :本機器的配置,使用這台機器的所有用戶都是用這個配置;

user settings :當前用戶的配置;

5:測試安裝,配置的Maven,檢查自己安裝配置是否成功;

  5.1:首先創建一個Maven工程;File--->New--->Other

 

  5.2:點擊Other之后,找到Maven,然后Maven--->Maven Project,然后點擊Next; 

  5.3:點擊next之后默認即可,選擇Next;

  5.4:點擊next之后點擊下面那個quickstart;然后點擊next即可;

    在構件向導的時候選擇quickstart注意, 此向導也是插件,第一次使用的時候.也要從遠程倉庫中下載相應的jar包, 因此需要網絡環境;

如果創建web項目選擇下面這個即可:

  5.5:點擊next之后出現如下所示的,然后將Group id和Artifact id填上,然后點擊Finish即可;

    groupId:定義當前Maven項目隸屬項目  (實際對應JAVA的包的結構, 是main目錄里java的目錄結構)
    artifactId:定義實際項目中的一個模塊(項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱)
    version:定義當前項目的當前版本

5.6

  5.6:點擊Finish之后出現如下所示的,點擊打開pox.xml,然后點擊pom.xml可以看這個pom.xm配置文件。

  5.7:右擊pom.xml,然后Run as,然后Maven build;

  5.8:如下演示所示,如果沒有報錯,說明編譯成功;

   5.9:如下所示,如果package沒有出現錯誤,那么說明打包成功;

6:Maven常用的命令,坐標,倉庫,鏡像倉庫:

  6.1:Maven常用的命令:

    mvn -v(mvn -version):查看maven的版本;

    mvn compile:編譯
    mvn test:測試
    mvn package:打包
    mvn clear:刪除target
    mvn install:安裝jar包到本地倉庫中

   6.2:Maven的坐標:坐標構件,如groupId,artifactId,version。

  6.3:Maven的倉庫分為本地倉庫和遠程倉庫(https://repo.maven.apache.org/maven2):

  6.4:鏡像倉庫(國外的可能無法訪問,如果不翻牆的話,但是可以訪問國內的鏡像倉庫),使用默認即可,這里不用管即可;  

  6.5:更改倉庫的位置,這點很重要,maven默認存放在C盤(你可以看看存在C盤這個位置:C:\Users\bhlgo\.m2\repository),這點很不好,你修改到自己需要的位置,最好別存放到C盤哈,修改如下所示:在apache-maven-3.5.0\conf\找到settings.xml這個xml文件,然后按照下面的操作即可。修改之后保存即可,最后最好再將修改好的settings.xml復制一份到剛才創建的倉庫即:C:\Users\bhlgo\.m2\repository,因為這樣以后再更新maven的版本就不用再修改settings.xml了。好了,大功告成,趕緊測試,看看倉庫是否已經修改成功了(使用上面的5.7進行測試即可哦)。

   6.6:使用阿里的鏡像,加快下載速度:你別說,阿里還真強。中國良心企業啊;修改如下所示:

    修改位置:maven/apache-maven-3.5.0/conf/setting.xml里面的鏡像位置;

1 <!--阿里鏡像-->
2 <mirror>
3 <id>nexus-aliyun</id>
4 <mirrorOf>central</mirrorOf>
5 <name>Nexus aliyun</name>
6 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
7 </mirror> 

"萬事開頭難,開好頭,萬事都不難",令我十分感概的是,最近老賈負面新聞,頻出不凡,不知道這個大boss能不能如史大哥一樣翻身啊。


 后續maven,使用maven創建struts項目測試:(將一些比較適合新手的補一下:)

1:File--->New--->Other--->Maven--->Maven Project--->next--->org.apache.maven.archetypes maven-archetype-webapp 1.0--->next--->如下圖--->finish

2:創建好之后會報錯,很正常,然后在src/main下面創建一個java文件夾,然后在src下面創建一個test文件夾,然后在test文件夾下面創建一個java文件夾;創建好之后還會報錯,然后將pom.xml修改一下(這是比較完整的pom.xml);

    第4行:<groupId>com.bie.maven</groupId>
      第5行:<artifactId>struts_20170506</artifactId>

  第280行:<finalName>struts_20170506</finalName>

  這三行修改成自己的項目名和組織名即可

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3     <modelVersion>4.0.0</modelVersion>
  4     <groupId>com.bie.maven</groupId>
  5     <artifactId>struts_20170506</artifactId>
  6     <packaging>war</packaging>
  7     <version>0.0.1-SNAPSHOT</version>
  8     <name>shop Maven Webapp</name>
  9     <url>http://maven.apache.org</url>
 10 
 11     <!-- <repositories> <repository> <id>nexus</id> <name>my-nexus-repository</name> 
 12         <url>http://127.0.0.1:8088/nexus-2.9.0/content/groups/public/</url> <releases> 
 13         <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> 
 14         </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> 
 15         <id>nexus</id> <name>my-nexus-repository</name> <url>http://127.0.0.1:8088/nexus-2.9.0/content/groups/public/</url> 
 16         <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> 
 17         </snapshots> </pluginRepository> </pluginRepositories> -->
 18     <properties>
 19         <java-version>1.8</java-version>
 20         <junit-version>4.8.2</junit-version>
 21         <org.springframework-version>3.2.4.RELEASE</org.springframework-version>
 22         <jackson-mapper-asl-version>1.9.12</jackson-mapper-asl-version>
 23         <jackson-core-asl-version>1.9.12</jackson-core-asl-version>
 24         <mysql-connector-java-version>5.1.8</mysql-connector-java-version>
 25         <org.mybatis-version>3.2.7</org.mybatis-version>
 26         <org.mybatis-spring-version>1.2.2</org.mybatis-spring-version>
 27         <opensymphony-version>2.4.2</opensymphony-version>
 28         <freemarker-version>2.3.9</freemarker-version>
 29         <c3p0-version>0.9.1.2</c3p0-version>
 30         <commons-collections-version>1.0</commons-collections-version>
 31         <commons-fileupload-version>1.2.2</commons-fileupload-version>
 32         <org.apache.commons-version>3.1</org.apache.commons-version>
 33         <commons-codec-version>1.6</commons-codec-version>
 34         <dom4j-version>1.6.1</dom4j-version>
 35         <javax.servlet-version>1.2</javax.servlet-version>
 36         <aspectjweaver-version>1.6.6</aspectjweaver-version>
 37         <slf4j-log4j12-version>1.6.6</slf4j-log4j12-version>
 38         <log4j-version>1.2.16</log4j-version>
 39         <javax.servlet-jsp-version>2.0</javax.servlet-jsp-version>
 40         <cglib-version>2.2.2</cglib-version>
 41         <slf4j-api-version>1.6.6</slf4j-api-version>
 42         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 43     </properties>
 44     <dependencies>
 45         <!-- with junit4.8.2 -->
 46         <dependency>
 47             <groupId>junit</groupId>
 48             <artifactId>junit</artifactId>
 49             <version>${junit-version}</version>
 50             <type>jar</type>
 51         </dependency>
 52         <!-- with spring -->
 53         <dependency>
 54             <groupId>org.springframework</groupId>
 55             <artifactId>spring-core</artifactId>
 56             <version>${org.springframework-version}</version>
 57         </dependency>
 58         <dependency>
 59             <groupId>org.springframework</groupId>
 60             <artifactId>spring-web</artifactId>
 61             <version>${org.springframework-version}</version>
 62         </dependency>
 63         <dependency>
 64             <groupId>org.springframework</groupId>
 65             <artifactId>spring-test</artifactId>
 66             <version>${org.springframework-version}</version>
 67         </dependency>
 68         <dependency>
 69             <groupId>org.springframework</groupId>
 70             <artifactId>spring-aspects</artifactId>
 71             <version>${org.springframework-version}</version>
 72         </dependency>
 73         <dependency>
 74             <groupId>org.springframework</groupId>
 75             <artifactId>spring-context-support</artifactId>
 76             <version>${org.springframework-version}</version>
 77         </dependency>
 78         <dependency>
 79             <groupId>org.springframework</groupId>
 80             <artifactId>spring-web</artifactId>
 81             <version>${org.springframework-version}</version>
 82         </dependency>
 83 
 84         <dependency>
 85             <groupId>org.springframework</groupId>
 86             <artifactId>spring-webmvc</artifactId>
 87             <version>${org.springframework-version}</version>
 88         </dependency>
 89         <dependency>
 90             <groupId>org.springframework</groupId>
 91             <artifactId>spring-jdbc</artifactId>
 92             <version>${org.springframework-version}</version>
 93         </dependency>
 94         <dependency>
 95             <groupId>org.springframework</groupId>
 96             <artifactId>spring-tx</artifactId>
 97             <version>${org.springframework-version}</version>
 98         </dependency>
 99         <dependency>
100             <groupId>org.springframework</groupId>
101             <artifactId>spring-instrument</artifactId>
102             <version>${org.springframework-version}</version>
103         </dependency>
104         <dependency>
105             <groupId>org.springframework</groupId>
106             <artifactId>spring-instrument-tomcat</artifactId>
107             <version>${org.springframework-version}</version>
108         </dependency>
109         <!--springmvc 轉 Json -->
110         <dependency>
111             <groupId>org.codehaus.jackson</groupId>
112             <artifactId>jackson-mapper-asl</artifactId>
113             <version>${jackson-mapper-asl-version}</version>
114         </dependency>
115         <dependency>
116             <groupId>org.codehaus.jackson</groupId>
117             <artifactId>jackson-core-asl</artifactId>
118             <version>${jackson-core-asl-version}</version>
119         </dependency>
120         <!--freemarker -->
121         <dependency>
122             <groupId>freemarker</groupId>
123             <artifactId>freemarker</artifactId>
124             <version>${freemarker-version}</version>
125         </dependency>
126         <!-- with mybatis-spring -->
127         <dependency>
128             <groupId>org.mybatis</groupId>
129             <artifactId>mybatis</artifactId>
130             <version>${org.mybatis-version}</version>
131         </dependency>
132         <dependency>
133             <groupId>org.mybatis</groupId>
134             <artifactId>mybatis-spring</artifactId>
135             <version>${org.mybatis-spring-version}</version>
136         </dependency>
137         <!-- jdbc driver -->
138         <dependency>
139             <groupId>mysql</groupId>
140             <artifactId>mysql-connector-java</artifactId>
141             <version>${mysql-connector-java-version}</version>
142         </dependency>
143         <!-- connect pool with c3p0 -->
144         <dependency>
145             <groupId>c3p0</groupId>
146             <artifactId>c3p0</artifactId>
147             <version>${c3p0-version}</version>
148         </dependency>
149         <!-- apache commons jar -->
150         <dependency>
151             <groupId>commons-collections</groupId>
152             <artifactId>commons-collections</artifactId>
153             <version>${commons-collections-version}</version>
154         </dependency>
155 
156         <dependency>
157             <groupId>commons-fileupload</groupId>
158             <artifactId>commons-fileupload</artifactId>
159             <version>${commons-fileupload-version}</version>
160         </dependency>
161 
162         <dependency>
163             <groupId>org.apache.commons</groupId>
164             <artifactId>commons-lang3</artifactId>
165             <version>${org.apache.commons-version}</version>
166         </dependency>
167 
168         <dependency>
169             <groupId>commons-codec</groupId>
170             <artifactId>commons-codec</artifactId>
171             <version>${commons-codec-version}</version>
172         </dependency>
173         <!-- analyze xml use dom4j -->
174         <dependency>
175             <groupId>dom4j</groupId>
176             <artifactId>dom4j</artifactId>
177             <version>${dom4j-version}</version>
178         </dependency>
179         <!-- about servlet -->
180         <dependency>
181             <groupId>javax.servlet</groupId>
182             <artifactId>jstl</artifactId>
183             <version>${javax.servlet-version}</version>
184         </dependency>
185 
186 
187         <dependency>
188             <groupId>taglibs</groupId>
189             <artifactId>standard</artifactId>
190             <version>1.1.2</version>
191         </dependency>
192         <dependency>
193             <groupId>javax.servlet</groupId>
194             <artifactId>javax.servlet-api</artifactId>
195             <version>3.0.1</version>
196             <scope>provided</scope>
197         </dependency>
198         <dependency>
199             <groupId>org.slf4j</groupId>
200             <artifactId>slf4j-log4j12</artifactId>
201             <version>1.6.6</version>
202         </dependency>
203         <dependency>
204             <groupId>log4j</groupId>
205             <artifactId>log4j</artifactId>
206             <version>1.2.17</version>
207         </dependency>
208 
209         <dependency>
210             <groupId>org.slf4j</groupId>
211             <artifactId>slf4j-api</artifactId>
212             <version>1.6.6</version>
213         </dependency>
214         <dependency>
215             <groupId>javax.activation</groupId>
216             <artifactId>activation</artifactId>
217             <version>1.1.1</version>
218         </dependency>
219 
220         <!-- memcached -->
221         <dependency>
222             <groupId>com.google.code.maven-play-plugin.spy</groupId>
223             <artifactId>memcached</artifactId>
224             <version>2.4.2</version>
225         </dependency>
226         <dependency>
227             <groupId>cglib</groupId>
228             <artifactId>cglib</artifactId>
229             <version>${cglib-version}</version>
230         </dependency>
231         <dependency>
232             <groupId>net.fckeditor</groupId>
233             <artifactId>java-core</artifactId>
234             <version>2.6</version>
235         </dependency>
236         <dependency>
237             <groupId>org.json</groupId>
238             <artifactId>json</artifactId>
239             <version>20131018</version>
240         </dependency>
241         
242 
243         <dependency>
244             <groupId>com.sun.jersey</groupId>
245             <artifactId>jersey-client</artifactId>
246             <version>1.18.1</version>
247         </dependency>
248         <dependency>
249             <groupId>jsptags</groupId>
250             <artifactId>pager-taglib</artifactId>
251             <version>2.0</version>
252         </dependency>
253 
254         <dependency>
255             <groupId>net.sourceforge.jexcelapi</groupId>
256             <artifactId>jxl</artifactId>
257             <version>2.6.10</version>
258         </dependency>
259 
260         <dependency>
261             <groupId>opensymphony</groupId>
262             <artifactId>oscache</artifactId>
263             <version>2.4.1</version>
264         </dependency>
265         <dependency>
266             <groupId>javax.servlet</groupId>
267             <artifactId>servlet-api</artifactId>
268             <version>2.4</version>
269             <scope>provided</scope>
270         </dependency>
271         
272         <dependency>
273             <groupId>org.apache.struts</groupId>
274             <artifactId>struts2-core</artifactId>
275             <version>2.3.8</version>
276         </dependency>
277 
278     </dependencies>
279     <build>
280         <finalName>struts_20170506</finalName>
281         <plugins>
282             <plugin>
283                 <groupId>org.apache.tomcat.maven</groupId>
284                 <artifactId>tomcat7-maven-plugin</artifactId>
285                 <version>2.2</version>
286                 <configuration>
287                     <url>http://localhost:8080/manager/text</url>
288                     <username>admin</username>
289                     <password>123</password>
290                 </configuration>
291             </plugin>
292         </plugins>
293     </build>
294 </project>

  錯誤分析:將上面做好之后我的報了一個錯,然后我將本地倉庫里面的dom4j刪除之后重新去pom.xml保存一下,然后就解決這個錯誤問題了;

  Failure to transfer dom4j:dom4j:jar:1.6.1 from http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced. Original error: Could not transfer artifact dom4j:dom4j:jar:1.6.1 from/to nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public): Failed to transfer http://maven.aliyun.com/nexus/content/groups/public/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar. Error code 503, Service Unavailable

org.eclipse.aether.transfer.ArtifactTransferException: Failure to transfer dom4j:dom4j:jar:1.6.1 from http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced. Original error: Could not transfer artifact dom4j:dom4j:jar:1.6.1 from/to nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public): Failed to transfer

3:然后修改一下src/main/webapp/web-inf/web.xml文件, 修改成如下即可:不然不支持el表達式:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 3   <display-name>Archetype Created Web Application</display-name>
 4   
 5   
 6 
 7   
 8   
 9   
10 </web-app>

4:最后測試允許即可,上面講過,這里不敘述了;最需要注意的就是jdk的問題,

  4.1:上面的4.4.5也說明這種情況

    或者使用下面這種方法解決jdk的問題;

  4.2:修改jre的版本:
      第一步:打開官網:http://maven.apache.org/
      第二步:點擊:maven plugins--->compiler--->
          Example--->Compile Using -source and -target javac Options
      第三步:之后:右鍵項目maven--->update project;
      第四步:看着官網給的指導,將下面的第一種方式復制到自己的pom.xml里面的url標簽和dependencies標簽之間即可;    

        第二種方式在build標簽之間,自己看清楚即可;

 1 <!-- pom修改jre的版本,第一種方式 -->
 2 <properties>
 3    <maven.compiler.source>1.7</maven.compiler.source>
 4    <maven.compiler.target>1.7</maven.compiler.target>
 5 </properties>
 6 
 7 <!-- pom修改jre的版本,第二種方式 -->
 8 <plugins>
 9     <plugin>
10         <groupId>org.apache.maven.plugins</groupId>
11         <artifactId>maven-compiler-plugin</artifactId>
12         <version>3.6.1</version>
13         <configuration>
14             <source>1.7</source>
15             <target>1.7</target>
16         </configuration>
17     </plugin>
18 </plugins>
19           

 初識maven就告一段落了,還有很多事情等着自己去解決呢,加油~~~


 5:Maven私服:

1:關於中央倉庫注意事項
    地址: 目前來說: http://repo1.maven.org/maven2/是真正的Maven中央倉庫的地址,該地址內置在Maven的源碼中其他的都是鏡像
    索引: 中央倉庫帶有索引文件以方便用戶對其進行搜索,完整的索引文件大小約為60M,索引每周更新一次
    黑名單: 如果某個IP地址惡意的下載中央倉庫內容,例如全公司100台機器使用同一個IP反復下載,這個IP(甚至是IP段)會進入黑名單,因此稍有規模的使用Maven時,應該用Nexus架設私服

2:為什么需要私服
    為什么要搭建nexus私服,原因很簡單,有些公司都不提供外網給項目組人員,因此就不能使用maven訪問遠程的倉庫地址,所以很有必要在局域網里找一台有外網權限的機器,搭建nexus私服,然后開發人員連到這台私服上,這樣的話就可以通過這台搭建了nexus私服的電腦訪問maven的遠程倉庫

 圖片描述如下所示:

6:Nexus環境搭建(是開源的框架,屬於sonatype 機構的開源框架,用該框架架設maven 私有服務器):

  官方網址:http://www.sonatype.org/nexus/

  第一步:下載nexus-2.6.2.war包,然后拷貝到tomcat下的webapps目錄中,把nexus.war 包放到tomcat的webapp下面;
  第二步:啟動tomcat,tomcat7有點慢 ,瀏覽且登錄,默認登錄賬戶密碼為: admin  admin123  
  第三步:訪問http://localhost:8080/項目名稱,就是自己的nexus的名稱/

7:認識repository:

Nexus倉庫的默認的地址, nexus-2.1.2\WEB-INF\plexus.properties 中定義的在Views/Repositories-->Repositories里進行配置, nexus里可以配置3種類型的倉庫,分別是proxy、hosted、group;
  proxy:是遠程倉庫的代理。比如說在nexus中配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact,這個proxy就會先在本地查找,如果找不到的話,就會從遠程倉庫下載,然后返回給用戶,相當於起到一個中轉的作用。代理倉庫  :代理中心倉庫的jar包。
  Hosted:是宿主倉庫,用戶可以把自己的一些構件,deploy到hosted中,也可以手工上傳構件到hosted里。比如說oracle的驅動程序,ojdbc6.jar,在central repository是獲取不到的,就需要手工上傳到hosted里,宿主倉庫 ,該倉庫屬於該公司私有的。
  Group:是倉庫組,在maven里沒有這個概念,是nexus特有的。目的是將上述多個倉庫聚合,對用戶暴露統一的地址,這樣用戶就不需要在pom中配置多個地址,只要統一配置group的地址就可以了右邊那個Repository Path可以點擊進去,看到倉庫中artifact列表。不過要注意瀏覽器緩存。我今天就發現,明明構件已經更新了,在瀏覽器里卻看不到,還以為是BUG,其實是被瀏覽器緩存了
  virtual:也是中央倉庫鏡像,支持M1老版本。

8:每個倉庫的作用:

Central Repository:
最關鍵的一個配置, 就是Central Repository的proxy配置,因為大部分的構件,都是要通過這個proxy得到的,

3rd party: 無法從公共倉庫獲得的第三方發布版本的構件倉庫,第三方的jar包,但是該jar包沒有在中心倉庫保存,驅動.jar。
Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫,測試版本、鏡像版本  easyNet.war。
Central: 用來代理maven中央倉庫中發布版本構件的倉庫。
Central M1 shadow: 用於提供中央倉庫中M1格式的發布版本的構件鏡像倉庫。
Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫。
Releases: 用來部署管理內部的發布版本構件的宿主類型倉庫,發行版本。
Snapshots:用來部署管理內部的快照版本構件的宿主類型倉庫。

具體如下圖所示:

 9:通過私服上傳下載jar包,上傳jar包:

11):直接上傳jar包,通過網站直接上傳。
22):把myEclispe項目上傳到私服。    
33):從私服中依賴jar包(下載jar包)。

  配置Hosted Repository:

    一般會配置3個hosted repository, 分別是3rd party、Snapshots、Releases,分別用來保存第三方jar(典型的比如ojdbc6.jar),項目組內部的快照、項目組內部的發布版, 這里並沒有什么特別的配置,只是Deployment Policy這個選項,一般Snapshots會配置成允許,而Releases和3rd party會設置為禁止;

  配置group repository
    前面說過group其實是一個虛擬的倉庫, 通過對實體倉庫(proxy、hosted)進行聚合, 對外暴露一個統一的地址這里要注意的是,放到左邊的倉庫,才是會被聚合的倉庫;

使用瀏覽器上傳如下所示:

上傳成功以后會彈出一個框提示你上傳成功了,如何驗證上傳成功了,如下所示:

 最后在pom.xml里面配置相應的配置即可;

待續......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM