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:镜像仓库(国外的可能无法访问,如果不FQ的话,但是可以访问国内的镜像仓库),使用默认即可,这里不用管即可;  

  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里面配置相应的配置即可;

待续......

posted on 2017-04-24 17:20  别先生  阅读(2203)  评论(3编辑  收藏  举报