• maven总结1


     环境:win7   maven版本:apache-maven-3.1.1-bin.zip

     

    maven安装

    1、确定已经正确安装jdk,若未安装需要先安装jdk 2、http://maven.apache.org/download.cgi 官网下载maven压缩包(Window下载zip包,linux下载tar.gz包),

         解压缩apache-maven-3.1.1-bin.zip,解压后本地路径为D:dev_envapache-maven-3.1.1 3、配置环境变量:      新建环境变量 M2_HOME = D:dev_envapache-maven-3.1.1      在环境变量PATH的后面加上 ;%M2_HOME%in  

          注意:最前面有一个分号,环境变量配置以分号分隔,若在未配置maven path时,path环境变量最末尾已经有分号,则 ;%M2_HOME%in 前面的分号可以不加 4、在控制台(cmd)下输入mvn -v命令,验证maven的安装情况

     

    自定义修改本地仓库路径

    maven默认的本地仓库路径是当前用户目录下的 .m2/repository (本地环境地址是:C:UsersAdministrator.m2 epository ,若为linux系统则为~/.m2/repository)   可自定义修改本地仓库的路径,修改后的路径为D:dev_envmaven epos (建议新建两层目录maven和repos作为本地仓库)    修改步骤:    1)修改%M2_HOME%/conf(D:dev_envapache-maven-3.1.1conf)下的settings.xml文件,         增加 <localRepository>D:/dev_env/maven/repos</localRepository>  路径为修改后的本地仓库的路径          settings.xml文件中的localRepository配置被注释掉了,新增的localRepository配置可以添加到注释下面

     

       2)将修改后的文件复制到D:dev_envmaven目录下(注意该目录是本地仓库目录的上级目录)

     

    简单实例

    maven项目目录规范:

    源代码应该放置到src/main/java中 源代码的资源文件应该放置在src/main/resources文件夹中 测试代码应该放置到src/test/java中 测试代码的资源文件应该放置在src/test/resources文件夹中

    maven命令:

    mvn clean -->表示运行清理操作(会默认把target文件夹中的数据清理) mvn clean compile-->表示先运行清理之后运行编译,会见代码编译到target文件夹中 mvn clean test-->运行清理和测试 mvn clean package-->运行清理和打包 mvn clean install-->运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用 mvn clean deploy-->运行清理和发布(发布到私服上面)

    实例步骤:

    1、新建一个项目跟目录01,本地路径为D: est1

    2、在01目录下新建pom.xml文件,每一个dependency代表项目所依赖的一个jar包,01项目依赖junit包

    [html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. <?xml version="1.0" encoding="UTF-8"?>  

    2. <project xmlns="http://maven.apache.org/POM/4.0.0"     

    3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

    4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  

    5.     <modelVersion>4.0.0</modelVersion>  

    6.   

    7.     <groupId>hello</groupId>  

    8.     <artifactId>hello-first</artifactId>  

    9.     <version>SNAPSHOT-0.0.1</version>  

    10.   

    11.     <dependencies>  

    12.         <dependency>  

    13.             <groupId>junit</groupId>  

    14.             <artifactId>junit</artifactId>  

    15.             <version>4.10</version>  

    16.             <scope>test</scope>  

    17.         </dependency>  

    18.     </dependencies>  

    19.   

    20. </project>  

    <?xml version="1.0" encoding="UTF-8"?><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>hello</groupId> <artifactId>hello-first</artifactId> <version>SNAPSHOT-0.0.1</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies></project>

    3、根据maven项目目录规范创建源码目录

    [java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. package xixi;  

    2.   

    3. public class HelloWorld  

    4. {  

    5.     public String sayHello ()  

    6.     {  

    7.         return "hello world";  

    8.     }  

    9. }  

    package xixi;public class HelloWorld{ public String sayHello () { return "hello world"; }}

    4、根据maven项目目录规范创建测试源码目录

    [java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. package xixi;  

    2.   

    3. import org.junit.*;  

    4. import static junit.framework.Assert.*;  

    5. import xixi.*;  

    6.   

    7. public class TestHello  

    8. {  

    9.     @Test   

    10.     public void testSayHello()  

    11.     {  

    12.         HelloWorld hello = new HelloWorld();  

    13.         assertEquals(hello.sayHello(), "hello world");  

    14.           

    15.     }  

    16. }  

    package xixi;import org.junit.*;import static junit.framework.Assert.*;import xixi.*;public class TestHello{ @Test public void testSayHello() { HelloWorld hello = new HelloWorld(); assertEquals(hello.sayHello(), "hello world"); }}

    5、在cmd下进入项目根目录 D: est1

         

    6、运行maven命令   运行maven命令请保持网络畅通

          mvn compile    编译

          mvn test  测试

    最后的BUILD SUCCESS 表示执行命令成功

     7、新建项目跟目录02和源码目录,02项目中的类会用到01项目中的HelloWorld类

           由于02项目会引用01项目中的类,此时01项目应该作为一个jar包供02使用,02项目的依赖配置中会依赖01项目

    [java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. package xixi;  

    2.   

    3. import xixi.*;  

    4.   

    5. public class HelloWorld2  

    6. {  

    7.     public static void main(String args[])  

    8.     {  

    9.         HelloWorld hello = new HelloWorld();  

    10.         System.out.println(hello.sayHello());  

    11.     }  

    12. }  

    package xixi;import xixi.*;public class HelloWorld2{ public static void main(String args[]) { HelloWorld hello = new HelloWorld(); System.out.println(hello.sayHello()); }}

     

    D: est2pom.xml    02依赖配置中的信息必须和01pom文件中定义的groupId  artifactId  version  保持一致     02项目依赖hello-first  jar包,在dependency中配置

    [html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. <?xml version="1.0" encoding="UTF-8"?>  

    2. <project xmlns="http://maven.apache.org/POM/4.0.0"     

    3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

    4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  

    5.     <modelVersion>4.0.0</modelVersion>  

    6.   

    7.     <groupId>hello</groupId>  

    8.     <artifactId>hello-second</artifactId>  

    9.     <version>SNAPSHOT-0.0.1</version>  

    10.   

    11.     <dependencies>  

    12.         <dependency>  

    13.             <groupId>hello</groupId>  

    14.             <artifactId>hello-first</artifactId>  

    15.             <version>SNAPSHOT-0.0.1</version>  

    16.             <scope>compile</scope>  

    17.         </dependency>  

    18.     </dependencies>  

    19.   

    20. </project>  

    <?xml version="1.0" encoding="UTF-8"?><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>hello</groupId> <artifactId>hello-second</artifactId> <version>SNAPSHOT-0.0.1</version> <dependencies> <dependency> <groupId>hello</groupId> <artifactId>hello-first</artifactId> <version>SNAPSHOT-0.0.1</version> <scope>compile</scope> </dependency> </dependencies></project>

    8、    在控制台cmd下进入01项目的根目录 D: est1 ,执行 mvn clean install命令  (这个命令会把01项目打成jar包放到本地仓库中,运行完命令可在仓库中找到01项目jar包)

    9、在控制台cmd下进入02项目的根目录 D: est2 ,执行mvn compile 命令,出现 BUILD SUCCESS信息表示执行成功

         02项目会依赖01项目,02项目在编译的时候会先从本地仓库中寻找依赖的jar包,寻找不到再从maven中央仓库中寻找(所以要先在01项目下运行 mvn  install将01 jar包发布到本地仓库中,02寻找依赖时才能正确导入jar包)

    10、在控制台cmd下进入02项目的根目录 D: est2 ,执行mvn clean package命令,会将02项目打成一个jar包(位于target下,执行编译完的class文件也在该目录下)

            此时生成的jar包是不可执行的,02项目中的HelloWorld2.java文件中有个main方法,要生成可执行的jar包需要借助maven-shade-plugin,配置完插件后的pom文件如下

    D: est2pom.xml 

    [html] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    1. <?xml version="1.0" encoding="UTF-8"?>  

    2. <project xmlns="http://maven.apache.org/POM/4.0.0"     

    3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

    4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  

    5.     <modelVersion>4.0.0</modelVersion>  

    6.   

    7.     <groupId>hello</groupId>  

    8.     <artifactId>hello-second</artifactId>  

    9.     <version>SNAPSHOT-0.0.1</version>  

    10.   

    11.     <dependencies>  

    12.         <dependency>  

    13.             <groupId>hello</groupId>  

    14.             <artifactId>hello-first</artifactId>  

    15.             <version>SNAPSHOT-0.0.1</version>  

    16.             <scope>compile</scope>  

    17.         </dependency>  

    18.     </dependencies>  

    19.       

    20.     <build>  

    21.         <plugins>    

    22.              <plugin>    

    23.                  <groupId>org.apache.maven.plugins</groupId>    

    24.                  <artifactId>maven-shade-plugin</artifactId>    

    25.                  <version>1.2.1</version>    

    26.                  <executions>    

    27.                      <execution>    

    28.                          <phase>package</phase>    

    29.                          <goals>    

    30.                              <goal>shade</goal>    

    31.                          </goals>    

    32.                          <configuration>    

    33.                              <transformers>    

    34.                                  <transformer   

    35.                                      implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">    

    36.                                      <!-- mainClass指定main方法所在的类 -->  

    37.                                      <mainClass>xixi.HelloWorld2</mainClass>    

    38.                                  </transformer>    

    39.                              </transformers>    

    40.                          </configuration>    

    41.                      </execution>    

    42.                  </executions>    

    43.              </plugin>    

    44.          </plugins>   

    45.     </build>  

    46. </project>  

    <?xml version="1.0" encoding="UTF-8"?><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>hello</groupId> <artifactId>hello-second</artifactId> <version>SNAPSHOT-0.0.1</version> <dependencies> <dependency> <groupId>hello</groupId> <artifactId>hello-first</artifactId> <version>SNAPSHOT-0.0.1</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- mainClass指定main方法所在的类 --> <mainClass>xixi.HelloWorld2</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build></project>

    11、更改完pom文件,在控制台cmd下进入02项目的根目录 D: est2 ,重新执行mvn clean package命令,打开target目录,可以看到hello-second-SNAPSHOT-0.0.1.jar和original-hello-second-SNAPSHOT-0.0.1.jar两个jar包,前者是带有Main-Class信息的可运行jar,后者是原始的jar,打开hello-second-SNAPSHOT-0.0.1.jar的

    META-INF/MANIFEST.MF,可以看到这样一行信息:Main-Class: xixi.HelloWorld2

    12、在控制台cmd下进入02项目的根目录 D: est2,执行 java -jar targethello-second-SNAPSHOT-0.0.1.jar  命令,执行jar包中的main方法,控制台输出hello world

  • 相关阅读:
    android OnActivityResult()的调用时机问题
    把汉化的eclipse还原为英语版的小绝招
    sunPKCS11加载动态库(转)
    android 源码分析
    android notification应用
    期待快点过去
    Linux 的Root 帐号
    C#之CMD
    更新Citrix Merchandising Server 2.2的默认Updater
    CRL的验证
  • 原文地址:https://www.cnblogs.com/justuntil/p/4752943.html
Copyright © 2020-2023  润新知