lenmom

博客园 首页 新随笔 联系 订阅 管理

Maven是什么?

Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。

在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。

Windows安装Maven

1.首先需要JDK的支持,Maven3.2.*版本需要JDK1.6的支持,Maven3.3.*以上需要JDK1.7以上的支持,JDK的安装以及配置在此不多赘述。 
2.前往Maven官网下载zip包,地址:http://maven.apache.org/download.cgi 
我机器JDK是1.6版本,所以右下方可以下载之前的版本
3.解压之后,记录下路径,在系统环境变量中添加 M2_HOME 和 MAVEN_HOME,最后在PATH中添加。 
这里写图片描述 
这里写图片描述 
4.验证是否安装成功,在cmd输入命令mvn -version验证。 
这里写图片描述 
若是出现版本的信息,表示安装成功了。

Maven配置

1.Maven本地资源库

Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。 
Maven的本地资源库默认为 .m2 目录文件夹: 
Unix/Mac OS X – ~/.m2 
Windows – C:\Documents and Settings{your-username}.m2 
我们可以找到 {M2_HOME}\conf\setting.xml, 更新 localRepository项,选择我们想要存放的目录位置。 
默认是在user.home下的 
这里写图片描述
改为你想放的位置: 
这里写图片描述

2.Maven中央存储库与远程存储库

当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。 
若是中央存储库也没有找到,还可以在pom.xml中自定义远程存储库,Maven会去远程存储库下载,例如: 
告诉 Maven 来获得 Java.net 的依赖,你需要声明远程仓库在 pom.xml 文件这样:

 <repositories>
    <repository>
        <id>java.net</id>
        <url>https://maven.java.net/content/repositories/public/</url>
    </repository>
</repositories>

另外

由于maven中心库是国外网站,连接下载速度很是揪心,所以强烈推荐使用阿里云的镜像库,主流jar包都有,而且速度非常快,如图在.\conf\setting.xml文件中进行如下配置。

    <mirrors>
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <mirror>
            <id>central</id>
            <name>Maven Repository Switchboard</name>
            <url>http://repo1.maven.org/maven2/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
        <mirror>
            <id>ibiblio</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
        </mirror>
        <mirror>
            <id>jboss-public-repository-group</id>
            <mirrorOf>central</mirrorOf>
            <name>JBoss Public Repository Group</name>
            <url>http://repository.jboss.org/nexus/content/groups/public</url>
        </mirror>
        <mirror>
            <id>google-maven-central</id>
            <name>Google Maven Central</name>
            <url>https://maven-central.storage.googleapis.com
            </url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <!-- 中央仓库在中国的镜像 -->
        <mirror>
            <id>maven.net.cn</id>
            <name>oneof the central mirrors in china</name>
            <url>http://maven.net.cn/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

个人机器上配置的一个源也工作良好

  <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>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 
  </mirrors>

 

3.安装自定义jar包到本地Maven库

当出现下列情况时: 
1.要使用的 jar 不存在于 Maven 的中心储存库中。 
2.您创建了一个自定义的 jar ,而另一个 Maven 项目需要使用。 

远程服务器需要在settings.xml中配置server用户名密码

<server>
<id>n</id>
<username>abc</username>
<password>12345</password>
</server>


需要手动将所需要的jar包存放至Maven本地资源库,可以再cmd中输入以下命令:

mvn install:install-file -Dfile=c:\userdefined-1.0.jar -DgroupId=pers.test.code -DartifactId=userdefined -Dversion={1.0} -Dpackaging=jar

远程库命令如下
mvn deploy:deploy-file -DgroupId=com.abc.com3rd.policy -DartifactId=policy-sdk -Dversion=20180502102622 -Dpackaging=jar -Dfile=D:\jar\local_policy.jar -DrepositoryId=repo-huotu -Durl=http://repo.abc.com:8081/nexus/content/repositories/releases/ -DgeneratePom=false

各参数代表含义为:

-Dmaven.test.skip=true                              //跳过编译、测试
-Dfile=D:\MvnProject\service-mvn-1.0.0.jar          //jar包文件地址,绝对路径
-DgroupId=pri.roy.mvn.test                          //gruopId--pom坐标,自定义
-DartifactId=mvn-api                                //artifactId--pom坐标,自定义
-Dversion                                           //版本号
-Dpackaging                                         //打包方式
-DrepositoryId                                      //远程库服务器ID
-Durl                                               //远程库服务器地址

安装成功后,在pom.xml文件中可以使用了

<dependency>
      <groupId>pers.test.code</groupId>
      <artifactId>userdefined </artifactId>
      <version>1.0</version>
</dependency>

 

4. maven搜索

国内:http://www.codedocs.net/maven/browse

国外:http://mvnrepository.com/

 

5. 将本地jar文件安装到本地maven仓库

这里以bcprov-jdk16-1.46.jar为例来讲解,首先到http://www.codedocs.net/maven/browse去搜索bcprov-jdk16,并下载对应版本下来

安装:

cd /home/workspace/software
wget http://central.maven.org/maven2/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar
mvn install:install-file -Dfile=/home/workspace/software/bcprov-jdk16-1.46.jar -DgroupId=org.bouncycastle -DartifactId=bcprov-jdk16 -Dversion=1.46 -Dpackaging=jar

其中maven的参数在网页中有,即:

<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcprov-jdk16</artifactId>
  <version>1.46</version>
</dependency>

 

posted on 2019-01-18 10:10  老董  阅读(878)  评论(0编辑  收藏  举报