: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..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。

aaarticlea/png;base64,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" alt="" />

  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里面的镜像位置;

 <!--阿里镜像-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</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>

  这三行修改成自己的项目名和组织名即可

 <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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bie.maven</groupId>
<artifactId>struts_20170506</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>shop Maven Webapp</name>
<url>http://maven.apache.org</url> <!-- <repositories> <repository> <id>nexus</id> <name>my-nexus-repository</name>
<url>http://127.0.0.1:8088/nexus-2.9.0/content/groups/public/</url> <releases>
<enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled>
</snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository>
<id>nexus</id> <name>my-nexus-repository</name> <url>http://127.0.0.1:8088/nexus-2.9.0/content/groups/public/</url>
<releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled>
</snapshots> </pluginRepository> </pluginRepositories> -->
<properties>
<java-version>1.8</java-version>
<junit-version>4.8.2</junit-version>
<org.springframework-version>3.2.4.RELEASE</org.springframework-version>
<jackson-mapper-asl-version>1.9.12</jackson-mapper-asl-version>
<jackson-core-asl-version>1.9.12</jackson-core-asl-version>
<mysql-connector-java-version>5.1.8</mysql-connector-java-version>
<org.mybatis-version>3.2.7</org.mybatis-version>
<org.mybatis-spring-version>1.2.2</org.mybatis-spring-version>
<opensymphony-version>2.4.2</opensymphony-version>
<freemarker-version>2.3.9</freemarker-version>
<c3p0-version>0.9.1.2</c3p0-version>
<commons-collections-version>1.0</commons-collections-version>
<commons-fileupload-version>1.2.2</commons-fileupload-version>
<org.apache.commons-version>3.1</org.apache.commons-version>
<commons-codec-version>1.6</commons-codec-version>
<dom4j-version>1.6.1</dom4j-version>
<javax.servlet-version>1.2</javax.servlet-version>
<aspectjweaver-version>1.6.6</aspectjweaver-version>
<slf4j-log4j12-version>1.6.6</slf4j-log4j12-version>
<log4j-version>1.2.16</log4j-version>
<javax.servlet-jsp-version>2.0</javax.servlet-jsp-version>
<cglib-version>2.2.2</cglib-version>
<slf4j-api-version>1.6.6</slf4j-api-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- with junit4.8.2 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<type>jar</type>
</dependency>
<!-- with spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument-tomcat</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!--springmvc 转 Json -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson-mapper-asl-version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>${jackson-core-asl-version}</version>
</dependency>
<!--freemarker -->
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker-version}</version>
</dependency>
<!-- with mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${org.mybatis-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${org.mybatis-spring-version}</version>
</dependency>
<!-- jdbc driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java-version}</version>
</dependency>
<!-- connect pool with c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0-version}</version>
</dependency>
<!-- apache commons jar -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections-version}</version>
</dependency> <dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload-version}</version>
</dependency> <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${org.apache.commons-version}</version>
</dependency> <dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec-version}</version>
</dependency>
<!-- analyze xml use dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>${dom4j-version}</version>
</dependency>
<!-- about servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${javax.servlet-version}</version>
</dependency> <dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency> <!-- memcached -->
<dependency>
<groupId>com.google.code.maven-play-plugin.spy</groupId>
<artifactId>memcached</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>${cglib-version}</version>
</dependency>
<dependency>
<groupId>net.fckeditor</groupId>
<artifactId>java-core</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20131018</version>
</dependency> <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>jsptags</groupId>
<artifactId>pager-taglib</artifactId>
<version>2.0</version>
</dependency> <dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency> <dependency>
<groupId>opensymphony</groupId>
<artifactId>oscache</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.8</version>
</dependency> </dependencies>
<build>
<finalName>struts_20170506</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<username>admin</username>
<password>123</password>
</configuration>
</plugin>
</plugins>
</build>
</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表达式:

 <?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>Archetype Created Web Application</display-name> </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标签之间,自己看清楚即可;

 <!-- pom修改jre的版本,第一种方式 -->
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties> <!-- pom修改jre的版本,第二种方式 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>

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


5:Maven私服:

:关于中央仓库注意事项
地址: 目前来说: http://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中其他的都是镜像
索引: 中央仓库带有索引文件以方便用户对其进行搜索,完整的索引文件大小约为60M,索引每周更新一次
黑名单: 如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服 :为什么需要私服
为什么要搭建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.\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包:

 ():直接上传jar包,通过网站直接上传。
():把myEclispe项目上传到私服。
():从私服中依赖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里面配置相应的配置即可;

待续......

Maven的下载,安装,配置,测试,初识以及Maven私服的更多相关文章

  1. maven基础--下载安装配置命令生命周期

    maven apache 公司开源项目,项目构建工具 好处: 项目小 坐标:公司名称+项目名称+版本信息 通过坐标去 仓库查找jar包 maven的两大核心: *赖管理:对jar包管理过程. 项目构建 ...

  2. MySQL 5.7.33 超级详细下载安装配置测试教程(可以安装成功版)

    目录 1.引言及注意事项 (1) 引言: (2) 注意: 2.MySQL下载 3.配置环境变量 4.配置my.ini文件(重点) 5.安装MySQL(重点) 6.设置密码 7.测试MySQL是否安装成 ...

  3. Jmeter下载安装配置及使用(windows)

    1 前言 仅作为记录使用. 2 步骤 2.1 下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.2 选择binary版本即可:apache-jme ...

  4. maven的下载安装,配置本地仓库

    maven的下载安装 下载地址:http://maven.apache.org/download.cgi 下载完成后解压到某一个目录 配置环境变量 第一个环境变量 MAVEN_HOME A:\mave ...

  5. win10 DVWA下载安装配置(新手学渗透)

    电脑重装系统了,需要重新装一下渗透测试的学习环境DVWA,借此机会就跟大家讲一下DVWA的安装过程,因为不同的电脑配置.环境不同,在我的电脑上按照我这个安装教程是一次性就安装好了的.如果安装的时候遇到 ...

  6. NodeJs在windows上安装配置测试

    Node.js简介简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个 ...

  7. JDK下载安装配置教程(详细)

    JDK下载安装配置教程(详细) 版权声明:本文为原创文章,转载请附上原文出处链接和本声明.https://www.cnblogs.com/mxxbc/p/11844885.html 因为最近需要在Wi ...

  8. Maven的下载以及配置

    Maven的下载以及配置 Maven的两大核心作用: (1)依赖管理:对Jar包的依赖,解决Jar包之间的冲突 (2)项目构建:项目从编译到测试到运行发布 一.Mavenu的下载(现在的eclipse ...

  9. Windows32位或64位下载安装配置Scala

    [学习笔记] Windows 32位或64位下载安装配置Scala: 1)下载地址:http://www.scala-lang.org/download/,看我的spark那节,要求scala是2.1 ...

  10. Windows32或64位下载安装配置Spark

    [学习笔记] Windows 32或64位下载安装配置Spark:1)下载地址:http://spark.apache.org/downloads.html 马克-to-win @ 马克java社区: ...

随机推荐

  1. VirtualBox设置共享文件夹

    前提是已经正确安装增强工具,在安装增强工具时,没有faile的,全部done 1.添加共享文件夹(已经在lmg下创建过目录 /mnt/bdshare ) sudo mount -t vboxsf Ba ...

  2. JAVA-大白话探索JVM-运行时内存(三)

    前面章节 JAVA-大白话探索JVM-类加载器(一) JAVA-大白话探索JVM-类加载过程(二) JVM运行时内存 通过之前的章节,我们知道.class类如何加载到内存中,如图红框 开始讲讲内存空间 ...

  3. CodeChef - CRYPCUR

    题目链接 AMRExchange is the latest cryptocurrency exchange that has become very popular among cryptocurr ...

  4. java中常量文件的配置与读取

    java中常量文件的配置与读取: package com.floor.shop.user.util; import java.io.InputStream; import java.io.InputS ...

  5. C# cmd调用外部命令

    void test2() { Process process = new Process(); //C:\\Users\\Administrator\\Desktop\\ffmpeg\\bin\\ff ...

  6. pyqt5-多线程QThread类

    要实现多线程,我们要先继承QThread类并重新实现其中的run()函数,也就是说把耗时的操作放入run()函数中 import sys from PyQt5.QtCore import Qt, QT ...

  7. Springboot使用FastJson后,接口返回中文乱码的问题解决。

    哎,天下文章一大抄,到处都是一模一样的教你怎么替换掉jackson成fastjson的,可后续中文乱码网上居然没一篇文章.翻了一会源码还是写个文章共享下吧.免得后来人又浪费时间折腾. 在springb ...

  8. AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数

    定义和用法ajaxSetup() 方法为将来的 AJAX 请求设置默认值.语法$.ajaxSetup({name:value, name:value, ... }) 该参数为带有一个或多个名称/值对的 ...

  9. RoIPooling、RoIAlign笔记

    一).RoIPooling 这个可以在Faster RCNN中使用以便使生成的候选框region proposal映射产生固定大小的feature map 先贴出一张图,接着通过这图解释RoiPool ...

  10. shiroWeb项目-认证及MD5认证信息在页面显示(十)

    realm设置完整认证信息 // realm的认证方法,从数据库查询用户信息 @Override protected AuthenticationInfo doGetAuthenticationInf ...