zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    null in ABAP and nullpointer in Java
    SAP ABAP SM50事务码和Hybris Commerce的线程管理器
    Hybris service layer和SAP CRM WebClient UI架构的横向比较
    SAP ABAP和Linux系统里如何检查网络传输的数据量
    SAP CRM WebClient UI和Hybris的controller是如何被调用的
    SAP CRM和Cloud for Customer订单中的业务伙伴的自动决定机制
    SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
    SAP BSP和JSP页面里UI元素的ID生成逻辑
    微信jsapi支付
    微信jsapi退款操作
  • 原文地址:https://www.cnblogs.com/justuntil/p/4752943.html
Copyright © 2011-2022 走看看