Fork me on GitHub

maven

Maven概念

maven的作用:

  • Jar包的管理(父项目管理jar包版本,子项目添加jar包依赖);
  • 工程之间的依赖管理(聚合工程中子项目的相互依赖);
  • 自动打包(聚合工程会有多个项目,可以很方便的打包,以及编译插件配置)

Maven的常见打包方式:jar、war、pom

Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。

配置环境变量

maven官网下载Maven工具安装好后配置环境变量。

 

在系统变量里找到path,点击编辑,

把;%MAVEN_HOME%\bin;

配置文件

配置conf/setting.xml文件

配置本地仓库路径

<localRepository>D:\Programmer_QY\apache-maven-3.5.0\repository</localRepository>

配置远程仓库地址

<mirror>
<!--该镜像的id-->
<id>nexus-aliyun</id>
<!--该镜像用来取代的远程仓库,central是中央仓库的id-->
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<!--该镜像的仓库地址,这里是用的阿里的仓库-->
<url>http://maven.aliyun.com/nexus/content/groups/public</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>uk</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://uk.maven.org/maven2/</url>
        </mirror>
        <mirror>
            <id>CN</id>
            <name>OSChina Central</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
        <mirror>
            <id>nexus</id>
            <name>internal nexus repository</name>
            <!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
            <url>http://repo.maven.apache.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

jar打包到本地仓库

直接把jar包放到D盘根目录下,用mvn install命令将现成的jar包install到本地仓库。

mvn install:install-file -DgroupId=com.insigma -DartifactId=wxjy-common -Dversion=1.0.5-SNAPSHOT -Dpackaging=jar -Dfile=D:\wxjy-common-1.0.5-SNAPSHOT.jar

如果不想install到本地,可以直接放在项目的lib下面,然后用坐标指定jar的位置。

<dependency>
    <groupId>aut</groupId>
    <artifactId>aut-lib</artifactId>
    <version>1.0.5</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/wx-common-1.0.5-SNAPSHOT.jar</systemPath>
</dependency>

检测Maven

mvn help:system

eclipse配置maven目录以及setting.xml路径

IDEA版本和Maven版本对应

IDEA2017 -> Maven 3.5.0

IDEA2018 -> Maven 3.5.4

IDEA2021 -> Maven 3.6.3

如果maven版本过高会报错,详细

打包

三种打包插件

maven-jar-plugin

maven-assembly-plugin

maven-shade-plugin

mvn clean compile    #重新编译
mvn clean package   #重新打包

带主类jar

mvn package命令打包,这样打包出来的jar包需要用jar -classpath *.jar com.*.*来运行,如果想带MainClass。需要在pom.xml中添加如下配置

        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
              <archive>
                  <manifest>
                      <mainClass>com.gmtx.MainClass</mainClass>
                      <addClasspath>true</addClasspath>
                      <classpathPrefix>lib/</classpathPrefix>
                  </manifest>
              </archive>

              <classesDirectory>
              </classesDirectory>
          </configuration>
        </plugin>    

 

带依赖jar

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <!--打包时连同依赖包一起打包-->
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

使用此插件进行打包时,不再是使用mvn package 命令,而是使用mvn assembly:assembly命令。执行成功后会在target文件夹下多出一个以-jar-with-dependencies结尾的jar包。这个jar包中就包含了当前项目的所有依赖包。

导出依赖jar包

从Maven项目中导出项目依赖的jar包。可用于获取maven坐标的所有jar及依赖包。

mvn dependency:copy-dependencies

源码包sources.jar

                <!--配置生成源码包-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.0.1</version>
                    <configuration>
                        <attach>true</attach>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

mvn source:jar命令可以生成sources.jar。

文档包doc.jar

                <!--配置生成DOC包-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.10.4</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <aggregate>true</aggregate>
                        <charset>UTF-8</charset>
                        <docencoding>UTF-8</docencoding>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

生成doc命令,mvn javadoc:javadoc,生成后位于target/site/apidocs下面。

 

注释只能使用如下标签
posted @ 2018-05-02 20:15  秋夜雨巷  阅读(242)  评论(0编辑  收藏  举报