打jar包时把依赖打到jar



[html] view plain copy



    1. <plugins>
    2.               
    3. <plugin>
    4. <artifactId>maven-assembly-plugin</artifactId>
    5. <configuration>
    6. <descriptorRefs>
    7. <descriptorRef>jar-with-dependencies</descriptorRef>
    8. </descriptorRefs>
    9. <archive>
    10. <manifest>
    11. <mainClass></mainClass>
    12. </manifest>
    13. </archive>
    14. </configuration>
    15. <executions>
    16. <execution>
    17. <id>make-assembly</id>
    18. <phase>package</phase>
    19. <goals>
    20. <goal>single</goal>
    21. </goals>
    22. </execution>
    23. </executions>
    24. </plugin>
    25.                
    26. </plugins>


    把依赖和jsp等文件放在指定目录(直接是项目,不是war)



    [html] view plain copy



      1. <plugin>
      2. <groupId>org.apache.maven.plugins</groupId>
      3. <artifactId>maven-war-plugin</artifactId>
      4. <configuration>
      5. <webappDirectory>D:/apache-tomcat-7.0.64/webapps/bj12385</webappDirectory>
      6. <warSourceDirectory>D:/apache-tomcat-7.0.64/webapps/bj12385</warSourceDirectory>
      7. </configuration>
      8. </plugin>







      以下下为互联网上搜的


      就拿这个属性配置来说: 




      maven package 打包动态设置yml变量 maven打包配置_tomcat


      1. <properties>
      2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      3. <spring.framework.version>3.0.5.RELEASE</spring.framework.version>
      4. <cxf.version>2.3.2</cxf.version>
      5. <tiles.version>2.2.2</tiles.version>
      6. </properties>


      我需要让整个项目统一字符集编码,就需要设定

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> ;如果我需要让spring统一版本号,可以设置这么个变量 <spring.framework.version>3.0.5.RELEASE</spring.framework.version> ,当然,maven不会那么乖乖的自动识别这些配置。当然, <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 默认还是可以识别的! 



      插件

      配置: 


      资源配置

      插件: 

      maven package 打包动态设置yml变量 maven打包配置_tomcat


      1. <plugin>
      2. <groupId>org.apache.maven.plugins</groupId>
      3. <artifactId>maven-resources-plugin</artifactId>
      4. <version>2.4.3</version>
      5. <configuration>
      6. <encoding>${project.build.sourceEncoding}</encoding>
      7. </configuration>
      8. </plugin>



      xml、properties文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制

      <encoding>${project.build.sourceEncoding}</encoding> ,虽然 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 默认可以识别,但是我还是觉得不放心。 


      这些插件有时候即便是不配置,它也是默认存在的! 



      编译

      插件: 

      这个插件就是个默认配置,不过我还是谨慎的配置了jdk编译版本跟字符集设置: 


      maven package 打包动态设置yml变量 maven打包配置_tomcat



        1. <plugin>
        2. <groupId>org.apache.maven.plugins</groupId>
        3. <artifactId>maven-compiler-plugin</artifactId>
        4. <version>2.0.2</version>
        5. <configuration>
        6. <source>1.6</source>
        7. <target>1.6</target>
        8. <encoding>${project.build.sourceEncoding}</encoding>
        9. </configuration>
        10. </plugin>



        <source>1.6</source>

        :源代码编译版本; 

        <target>1.6</target>

        :目标平台编译版本; 

        <encoding>${project.build.sourceEncoding}</encoding>

        :字符集编码。 


        如果你用eclipse建立maven项目时,新建的项目往往JDK版本很低——1.5!怎么办?修改settings.xml文件: 


        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <profile>
        2. <id>jdk-1.6</id>
        3. <activation>
        4. <activeByDefault>true</activeByDefault>
        5. <jdk>1.6</jdk>
        6. </activation>
        7. <properties>
        8. <maven.compiler.source>1.6</maven.compiler.source>
        9. <maven.compiler.target>1.6</maven.compiler.target>
        10. <maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion>
        11. </properties>
        12. </profile>


        eclipse会很听话的构建一个JDK1.6版本的maven项目!


        maven package 打包动态设置yml变量 maven打包配置_maven_05

         



        测试

        插件: 

        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <plugin>
        2. <groupId>org.apache.maven.plugins</groupId>
        3. <artifactId>maven-surefire-plugin</artifactId>
        4. <version>2.7.2</version>
        5. <configuration>
        6. <parallel>methods</parallel>
        7. <threadCount>10</threadCount>
        8. <argLine>-Dfile.encoding=UTF-8</argLine>
        9. <!-- <skip>true</skip> -->
        10. <!-- <testFailureIgnore>true</testFailureIgnore> -->
        11. </configuration>
        12. </plugin>
         
         
        <parallel>methods</parallel> 
         :方法级并发;  
         
        <threadCount>10</threadCount> 
         :是线程数,当前是10;  
         
        <argLine>-Dfile.encoding=UTF-8</argLine>

        :就是参数命令行,这一行很关键。测试插件有个小问题,它不依赖项目的字符集设置,它依赖于操作系统。如果你用命令行操作,看中文提示测试结果还好。但在win+eclipse(UTF-8设置)下,那就是乱码了; 

        <skip>true</skip>

        是忽略测试; 

        <testFailureIgnore>true</testFailureIgnore>

        :忽略测试异常; 


        测试报告

        插件: 

        要测试,就要有报告,知晓测试覆盖率,这就需要clover: 


        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <plugin>
        2. <groupId>maven</groupId>
        3. <artifactId>maven-clover-plugin</artifactId>
        4. <version>2.4.2</version>
        5. <configuration>
        6. <encoding>${project.build.sourceEncoding}</encoding>
        7. </configuration>
        8. </plugin>



        安全起见,我还是要强制写遍字符集编码设置:

        <encoding>${project.build.sourceEncoding}</encoding>  


        可以使用 

        mvn cobertura:cobertura  产生测试覆盖率报告! 


        eclipse

        插件: 

        在eclipse下进行maven项目开发,还是需要eclipse相应的插件: 


        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <plugin>
        2. <groupId>org.apache.maven.plugins</groupId>
        3. <artifactId>maven-eclipse-plugin</artifactId>
        4. <version>2.8</version>
        5. <configuration>
        6. <wtpmanifest>true</wtpmanifest>
        7. <wtpapplicationxml>true</wtpapplicationxml>
        8. <wtpversion>2.0</wtpversion>
        9. <downloadSources>true</downloadSources>
        10. <downloadJavadocs>true</downloadJavadocs>
        11. </configuration>
        12. </plugin>


        <wtpmanifest>true</wtpmanifest> 
         :产生manifest文件  
         
        <wtpapplicationxml>true</wtpapplicationxml> 
         :产生web.xml文件  
         
        <wtpversion>2.0</wtpversion> 
         :这是eclipse里面的wtp版本  
         
        <downloadSources>true</downloadSources> 
         :下载源代码  
         
        <downloadJavadocs>true</downloadJavadocs> 
         :下载源码文档



        虽然这么配置了,但是由maven项目转为eclipse的wtp类型的项目时,所产生的文件根本没有实际意义。web.xml文件的servlet版本很低,也许是我没有配置。对应的xml字符集的头标识也没有。 



        war包

        插件: 

        既然是web项目,就需要打war包,那就需要这个插件: 


        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <plugin>
        2. <groupId>org.apache.maven.plugins</groupId>
        3. <artifactId>maven-war-plugin</artifactId>
        4. <version>2.1.1</version>
        5. <configuration>
        6. <encoding>${project.build.sourceEncoding}</encoding>
        7. <warName>platform</warName>
        8. <webappDirectory>${project.build.directory}/platform</webappDirectory>
        9. <warSourceDirectory>WebContent</warSourceDirectory>
        10. </configuration>
        11. </plugin>


        <encoding>${project.build.sourceEncoding}</encoding>

        强制字符集编码 

        <warName>platform</warName>

        war包名字——platform.war 

        <webappDirectory>${project.build.directory}/platform</webappDirectory>

        产生war前,用于存放构建war包的目录——target/platform。 

        <warSourceDirectory>WebContent</warSourceDirectory>

        :我把web工程搞成了eclipse下的WTP类型。我不喜欢maven产生的webapp目录,更喜欢WebContent! 


        tomcat

        插件: 

        我习惯于用tomcat作为JSP容器,对jetty多少有点陌生。不但如此,我还通过在Bamboo中配置命令让这个应用可以在tomcat中定时部署: 


        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <plugin>
        2. <groupId>org.codehaus.mojo</groupId>
        3. <artifactId>tomcat-maven-plugin</artifactId>
        4. <configuration>
        5. <charset>${project.build.sourceEncoding}</charset>
        6. <url>http://localhost:8080/manager</url>
        7. <server>tomcat.server</server>
        8. <path>/platform</path>
        9. <port>8080</port>
        10. <warFile>${project.build.directory}/platform.war</warFile>
        11. <warSourceDirectory>WebContent</warSourceDirectory>
        12. <uriEncoding>${project.build.sourceEncoding}</uriEncoding>
        13. </configuration>
        14. </plugin>

        <charset>${project.build.sourceEncoding}</charset>

        :字符集强制编码 

        <url>http://localhost:8080/manager/text</url>

        :我这里已经使用了Tomcat7,如果是Tomcat6就不需要 /text ! 

        <server>tomcat.server</server>

        这是个用户名设置,需要配置maven的settings.xml文件: 

        maven package 打包动态设置yml变量 maven打包配置_tomcat


        1. <servers>
        2. <server>
        3. <id>tomcat.server</id>
        4. <username>admin</username>
        5. <password>123456</password>
        6. </server>
        7. </servers>


        别急,这时候还没完! 


        在tomcat的tomcat-users.xml中补充相关内容: 


        maven package 打包动态设置yml变量 maven打包配置_tomcat



          1. <role rolename="manager-gui"/>
          2. <role rolename="magager-script"/>
          3. <user username="admin" password="123456" roles="manager-gui,manager-script" />



          这是Tomat7的配置,在Tomcat6中应该是: 


          maven package 打包动态设置yml变量 maven打包配置_tomcat


          1. <role rolename="manager"/>
          2. <user username="admin" password="123456" roles="manager" />


          <port>8080</port>

          :运行时端口 

          <path>/platform</path>

          :是运行时路径——http://host:port/platform 

          <warFile>${project.build.directory}/platform.war</warFile>

          :我们以war包方式发布,需要指定war包路径。

          <warSourceDirectory>WebContent</warSourceDirectory>

          :同时要指定war包源码路径。这里我使用eclipse的WTP类型工程WebContent目录。 

          <uriEncoding>${project.build.sourceEncoding}</uriEncoding>

          :强制字符集编码! 


          插件命令: 


          maven package 打包动态设置yml变量 maven打包配置_tomcat


          1. #Run Tomcat  
          2. mvn tomcat:run  
          3. #Stop Tomcat  
          4. #Deploy Tomcat  
          5. mvn tomcat:deploy  
          6. #Undeploy Tomcat  
          7. mvn tomcat:undeploy  
          8. #Redeploy Tomcat  
          9. mvn tomcat:redeploy


          对于我来说,我最常用的就是

          mvn tomcat:run  跟  mvn tomcat:redeploy ,而且我会把他们配置在eclipse中: 


           



          加上个-X,我可以清楚的知道每一个插件的配置,以及详细的Debug信息! 


          打jar包时把依赖打到jar



          [html] view plain copy



            1. <plugins>
            2.               
            3. <plugin>
            4. <artifactId>maven-assembly-plugin</artifactId>
            5. <configuration>
            6. <descriptorRefs>
            7. <descriptorRef>jar-with-dependencies</descriptorRef>
            8. </descriptorRefs>
            9. <archive>
            10. <manifest>
            11. <mainClass></mainClass>
            12. </manifest>
            13. </archive>
            14. </configuration>
            15. <executions>
            16. <execution>
            17. <id>make-assembly</id>
            18. <phase>package</phase>
            19. <goals>
            20. <goal>single</goal>
            21. </goals>
            22. </execution>
            23. </executions>
            24. </plugin>
            25.                
            26. </plugins>



            把依赖和jsp等文件放在指定目录(直接是项目,不是war)



            [html] view plain copy


            1. <plugin>
            2. <groupId>org.apache.maven.plugins</groupId>
            3. <artifactId>maven-war-plugin</artifactId>
            4. <configuration>
            5. <webappDirectory>D:/apache-tomcat-7.0.64/webapps/bj12385</webappDirectory>
            6. <warSourceDirectory>D:/apache-tomcat-7.0.64/webapps/bj12385</warSourceDirectory>
            7. </configuration>
            8. </plugin>





            以下下为互联网上搜的


            就拿这个属性配置来说: 




            maven package 打包动态设置yml变量 maven打包配置_tomcat



              1. <properties>
              2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              3. <spring.framework.version>3.0.5.RELEASE</spring.framework.version>
              4. <cxf.version>2.3.2</cxf.version>
              5. <tiles.version>2.2.2</tiles.version>
              6. </properties>



              我需要让整个项目统一字符集编码,就需要设定

              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> ;如果我需要让spring统一版本号,可以设置这么个变量 <spring.framework.version>3.0.5.RELEASE</spring.framework.version> ,当然,maven不会那么乖乖的自动识别这些配置。当然, <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 默认还是可以识别的! 



              插件

              配置: 


              资源配置

              插件: 

              maven package 打包动态设置yml变量 maven打包配置_tomcat


              这些插件有时候即便是不配置,它也是默认存在的! 

              1. <plugin>
              2. <groupId>org.apache.maven.plugins</groupId>
              3. <artifactId>maven-resources-plugin</artifactId>
              4. <version>2.4.3</version>
              5. <configuration>
              6. <encoding>${project.build.sourceEncoding}</encoding>
              7. </configuration>
              8. </plugin>
               
               
              xml、properties文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制 
               <encoding>${project.build.sourceEncoding}</encoding> 
               ,虽然 
               <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
               默认可以识别,但是我还是觉得不放心。



              编译

              插件: 

              这个插件就是个默认配置,不过我还是谨慎的配置了jdk编译版本跟字符集设置: 


              maven package 打包动态设置yml变量 maven打包配置_tomcat


              1. <plugin>
              2. <groupId>org.apache.maven.plugins</groupId>
              3. <artifactId>maven-compiler-plugin</artifactId>
              4. <version>2.0.2</version>
              5. <configuration>
              6. <source>1.6</source>
              7. <target>1.6</target>
              8. <encoding>${project.build.sourceEncoding}</encoding>
              9. </configuration>
              10. </plugin>


              <source>1.6</source>

              :源代码编译版本; 

              <target>1.6</target>

              :目标平台编译版本; 

              <encoding>${project.build.sourceEncoding}</encoding>

              :字符集编码。 


              如果你用eclipse建立maven项目时,新建的项目往往JDK版本很低——1.5!怎么办?修改settings.xml文件: 


              maven package 打包动态设置yml变量 maven打包配置_tomcat


              1. <profile>
              2. <id>jdk-1.6</id>
              3. <activation>
              4. <activeByDefault>true</activeByDefault>
              5. <jdk>1.6</jdk>
              6. </activation>
              7. <properties>
              8. <maven.compiler.source>1.6</maven.compiler.source>
              9. <maven.compiler.target>1.6</maven.compiler.target>
              10. <maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion>
              11. </properties>
              12. </profile>


              eclipse会很听话的构建一个JDK1.6版本的maven项目!


              maven package 打包动态设置yml变量 maven打包配置_maven_05

               



              测试

              插件: 

              maven package 打包动态设置yml变量 maven打包配置_tomcat



                1. <plugin>
                2. <groupId>org.apache.maven.plugins</groupId>
                3. <artifactId>maven-surefire-plugin</artifactId>
                4. <version>2.7.2</version>
                5. <configuration>
                6. <parallel>methods</parallel>
                7. <threadCount>10</threadCount>
                8. <argLine>-Dfile.encoding=UTF-8</argLine>
                9. <!-- <skip>true</skip> -->
                10. <!-- <testFailureIgnore>true</testFailureIgnore> -->
                11. </configuration>
                12. </plugin>
                 
                 
                <parallel>methods</parallel> 
                 :方法级并发;  
                 
                <threadCount>10</threadCount> 
                 :是线程数,当前是10;  
                 
                <argLine>-Dfile.encoding=UTF-8</argLine>


                :就是参数命令行,这一行很关键。测试插件有个小问题,它不依赖项目的字符集设置,它依赖于操作系统。如果你用命令行操作,看中文提示测试结果还好。但在win+eclipse(UTF-8设置)下,那就是乱码了; 

                <skip>true</skip>

                是忽略测试; 

                <testFailureIgnore>true</testFailureIgnore>

                :忽略测试异常; 


                测试报告

                插件: 

                要测试,就要有报告,知晓测试覆盖率,这就需要clover: 


                maven package 打包动态设置yml变量 maven打包配置_tomcat



                  1. <plugin>
                  2. <groupId>maven</groupId>
                  3. <artifactId>maven-clover-plugin</artifactId>
                  4. <version>2.4.2</version>
                  5. <configuration>
                  6. <encoding>${project.build.sourceEncoding}</encoding>
                  7. </configuration>
                  8. </plugin>



                  安全起见,我还是要强制写遍字符集编码设置:

                  <encoding>${project.build.sourceEncoding}</encoding>  


                  可以使用 

                  mvn cobertura:cobertura  产生测试覆盖率报告! 


                  eclipse

                  插件: 

                  在eclipse下进行maven项目开发,还是需要eclipse相应的插件: 


                  maven package 打包动态设置yml变量 maven打包配置_tomcat



                    1. <plugin>
                    2. <groupId>org.apache.maven.plugins</groupId>
                    3. <artifactId>maven-eclipse-plugin</artifactId>
                    4. <version>2.8</version>
                    5. <configuration>
                    6. <wtpmanifest>true</wtpmanifest>
                    7. <wtpapplicationxml>true</wtpapplicationxml>
                    8. <wtpversion>2.0</wtpversion>
                    9. <downloadSources>true</downloadSources>
                    10. <downloadJavadocs>true</downloadJavadocs>
                    11. </configuration>
                    12. </plugin>
                     
                     
                    <wtpmanifest>true</wtpmanifest> 
                     :产生manifest文件  
                     
                    <wtpapplicationxml>true</wtpapplicationxml> 
                     :产生web.xml文件  
                     
                    <wtpversion>2.0</wtpversion> 
                     :这是eclipse里面的wtp版本  
                     
                    <downloadSources>true</downloadSources> 
                     :下载源代码  
                     
                    <downloadJavadocs>true</downloadJavadocs>


                    :下载源码文档 


                    虽然这么配置了,但是由maven项目转为eclipse的wtp类型的项目时,所产生的文件根本没有实际意义。web.xml文件的servlet版本很低,也许是我没有配置。对应的xml字符集的头标识也没有。 



                    war包

                    插件: 

                    既然是web项目,就需要打war包,那就需要这个插件: 


                    maven package 打包动态设置yml变量 maven打包配置_tomcat


                    1. <plugin>
                    2. <groupId>org.apache.maven.plugins</groupId>
                    3. <artifactId>maven-war-plugin</artifactId>
                    4. <version>2.1.1</version>
                    5. <configuration>
                    6. <encoding>${project.build.sourceEncoding}</encoding>
                    7. <warName>platform</warName>
                    8. <webappDirectory>${project.build.directory}/platform</webappDirectory>
                    9. <warSourceDirectory>WebContent</warSourceDirectory>
                    10. </configuration>
                    11. </plugin>


                    <encoding>${project.build.sourceEncoding}</encoding> 
                     强制字符集编码  
                     
                    <warName>platform</warName> 
                     war包名字——platform.war  
                     
                    <webappDirectory>${project.build.directory}/platform</webappDirectory> 
                     产生war前,用于存放构建war包的目录——target/platform。  
                     
                    <warSourceDirectory>WebContent</warSourceDirectory>


                    :我把web工程搞成了eclipse下的WTP类型。我不喜欢maven产生的webapp目录,更喜欢WebContent! 


                    tomcat

                    插件: 

                    我习惯于用tomcat作为JSP容器,对jetty多少有点陌生。不但如此,我还通过在Bamboo中配置命令让这个应用可以在tomcat中定时部署: 


                    maven package 打包动态设置yml变量 maven打包配置_tomcat



                    1. <plugin>
                    2. <groupId>org.codehaus.mojo</groupId>
                    3. <artifactId>tomcat-maven-plugin</artifactId>
                    4. <configuration>
                    5. <charset>${project.build.sourceEncoding}</charset>
                    6. <url>http://localhost:8080/manager</url>
                    7. <server>tomcat.server</server>
                    8. <path>/platform</path>
                    9. <port>8080</port>
                    10. <warFile>${project.build.directory}/platform.war</warFile>
                    11. <warSourceDirectory>WebContent</warSourceDirectory>
                    12. <uriEncoding>${project.build.sourceEncoding}</uriEncoding>
                    13. </configuration>
                    14. </plugin>


                    <charset>${project.build.sourceEncoding}</charset>

                    :字符集强制编码 

                    <url>http://localhost:8080/manager/text</url>

                    :我这里已经使用了Tomcat7,如果是Tomcat6就不需要 /text ! 

                    <server>tomcat.server</server>

                    这是个用户名设置,需要配置maven的settings.xml文件: 

                    maven package 打包动态设置yml变量 maven打包配置_tomcat



                      1. <servers>
                      2. <server>
                      3. <id>tomcat.server</id>
                      4. <username>admin</username>
                      5. <password>123456</password>
                      6. </server>
                      7. </servers>



                      别急,这时候还没完! 


                      在tomcat的tomcat-users.xml中补充相关内容: 


                      maven package 打包动态设置yml变量 maven打包配置_tomcat


                      1. <role rolename="manager-gui"/>
                      2. <role rolename="magager-script"/>
                      3. <user username="admin" password="123456" roles="manager-gui,manager-script" />

                      这是Tomat7的配置,在Tomcat6中应该是: 


                      maven package 打包动态设置yml变量 maven打包配置_tomcat


                      1. <role rolename="manager"/>
                      2. <user username="admin" password="123456" roles="manager" />



                      <port>8080</port>

                      :运行时端口 

                      <path>/platform</path>

                      :是运行时路径——http://host:port/platform 

                      <warFile>${project.build.directory}/platform.war</warFile>

                      :我们以war包方式发布,需要指定war包路径。

                      <warSourceDirectory>WebContent</warSourceDirectory>

                      :同时要指定war包源码路径。这里我使用eclipse的WTP类型工程WebContent目录。 

                      <uriEncoding>${project.build.sourceEncoding}</uriEncoding>

                      :强制字符集编码! 


                      插件命令: 


                      maven package 打包动态设置yml变量 maven打包配置_tomcat

                      1. #Run Tomcat  
                      2. mvn tomcat:run  
                      3. #Stop Tomcat  
                      4. #Deploy Tomcat  
                      5. mvn tomcat:deploy  
                      6. #Undeploy Tomcat  
                      7. mvn tomcat:undeploy  
                      8. #Redeploy Tomcat  
                      9. mvn tomcat:redeploy


                      对于我来说,我最常用的就是

                      mvn tomcat:run  跟  mvn tomcat:redeploy ,而且我会把他们配置在eclipse中: 


                       



                      加上个-X,我可以清楚的知道每一个插件的配置,以及详细的Debug信息!