zoukankan      html  css  js  c++  java
  • maven常用插件pom配置

    一、问题描述:

    部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java.lang.NoClassDefFoundError:,当时心想可能是依赖的lib包有问题,各种重新部署(以为是依赖的包没有更新),确忽略了一个大问题:pom.xml没仔细检查。解决方法:最终发现<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>lib/</classpathPrefix>
                                <mainClass>com.bj58.finance.EntryMain</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>,这一段被注释了......直接导致依赖的jar包完全没有被添加进MANIFEST.MF(jar包解压缩后:jar包名/META-INF/MANIFEST.MF)的Class-Path。所以最终运行代码时,只要是依赖别的jar包的类就会报错,找不到类。这里涉及到MANIFEST.MF相关,详情请看传送门

    二、这里就涉及Maven常用插件pom.xml中的配置了。特此收集常用配置如下:

    1.根据项目类型打包:jar/war打包插件。

    首先看<packaging>jar</packing>属性,主流就2种类型。

    打成jar包插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                    <mainClass>com.*.MainClass</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>

    打成war包插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <configuration>
          <webResources>
            <resource>
              <directory>src/main/webapp</directory>
              <excludes>
                <exclude>**/*.jpg</exclude>
              </excludes>
            </resource>
          </webResources>
        </configuration>
      </plugin>

    2. 编译插件

    全局属性:源码编码为utf-8

    <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>1.6</source>//源代码编译版本
            <target>1.6</target>//目标平台编译版本
            <includes>
                <include>**/*.java</include>
            </includes>

            <encoding>${project.build.sourceEncoding}</encoding>//字符集编码,这里引用全局属性
        </configuration>
    </plugin>

    3.拷贝依赖jar包至target/lib下

    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-dependency-plugin</artifactId>  
        <version>2.6</version>  
        <executions>  
            <execution>  
                <id>copy-dependencies</id>  
                <phase>compile</phase>  
                <goals>  
                    <goal>copy-dependencies</goal>  
                </goals>  
                <configuration>  
                    <!-- ${project.build.directory}为Maven内置变量,缺省为target -->  
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>  
                    <!-- 表示是否不包含间接依赖的包 -->  
                    <excludeTransitive>false</excludeTransitive>  
                    <!-- 表示复制的jar文件去掉版本信息 -->  
                    <stripVersion>false</stripVersion>  
                </configuration>  
            </execution>  
        </executions>  
    </plugin>

    4.描述打包插件

    它支持各种打包文件格式,包括zip、tar.gz、tar.bz2等等

    执行mvn assembly:assembly, 执行成功后会在target文件夹下多出一个以-jar-with-dependencies结尾的JAR包. 这个JAR包就包含了项目所依赖的所有JAR的CLASS.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>

      <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>//把依赖的jar包一起打包
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
    </plugin>

    5.maven跳过测试用例插件

    maven-surefire-plugin 是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的 surefire:test 命令会默认绑定maven执行的 test 阶段。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.surefire</groupId>
                <artifactId>surefire-junit47</artifactId>
                <version>2.19</version>
            </dependency>
        </dependencies>
        <configuration>
            <skipTests>true</skipTests>//跳过测试用例
        </configuration>
    </plugin>

    6.maven自动build插件

    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-dependency-plugin</artifactId>
                                    <versionRange>[2.0,)</versionRange>
                                    <goals>
                                        <goal>copy-dependencies</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore/>
                                </action>
                            </pluginExecution>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>aspectj-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>test-compile</goal>
                                        <goal>compile</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore/>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

  • 相关阅读:
    AGC015E Mr.Aoki Incubator
    luogu P3520 [POI2011]SMI-Garbage
    442.Find All Duplicates in an Array
    SICP_2.61-2.62
    sicp_2.59-2.60
    SICP_2.58
    SICP_2.56-2.57
    SICP_2.53-2.55
    SICP_2.52-2.53
    SICP_2.50-2.51
  • 原文地址:https://www.cnblogs.com/dennyzhangdd/p/5831112.html
Copyright © 2011-2022 走看看