Maven导出jar包的几种常见方式

1、普通方式 不将依赖引入

<!--生成class文件jar包的插件 -->
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.1</version>
   <configuration>
     <source>${sourceJavaVersion}</source>
     <target>${targetJavaVersion}</target>
     <encoding>${project.build.sourceEncoding}</encoding>
   </configuration>
</plugin>
            

<!--生成依赖jar包的插件 --> <plugin> <artifactId>maven-dependency-plugin</artifactId> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <includeScope>runtime</includeScope> <excludeTransitive>false</excludeTransitive> <stripVersion>false</stripVersion> </configuration> </plugin> <!--打包生成源码 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals>   <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin>

2、引入依赖、将依赖jar包引入到项目中

<plugin>
                <artifactId> maven-assembly-plugin </artifactId>
                   <configuration>
                        <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                             <manifest>
                                  <mainClass>main函数</mainClass>
                             </manifest>
                        </archive>
                   </configuration>
                   <executions>
                        <execution>
                             <id>make-assembly</id>
                             <phase>package</phase>
                             <goals>
                                  <goal>single</goal>
                             </goals>
                        </execution>
                   </executions>
   </plugin>

3、使用shade打包方式打包

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>1.4</version>
    <executions>
      <execution>
      <phase>package</phase>
      <goals>
          <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <transformer
                      implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.sincetimes.adstatistics.TimerFactory</mainClass>
          </transformer>
          <transformer
                      implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
            <resource>META-INF/spring.handlers</resource>
          </transformer>
          <transformer
                      implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
          <resource>META-INF/spring.schemas</resource>
          </transformer>
        </transformers>
      </configuration>
     </execution>
   </executions>
</plugin>

打包时指定jdk版本

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sourceJavaVersion>1.8</sourceJavaVersion>
    <targetJavaVersion>1.8</targetJavaVersion>
    <project.build.directory>/</project.build.directory>
</properties>

项目真实配置

  <build>
    <resources>
      <resource>
        <targetPath>${project.build.directory}/classes</targetPath>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/*.yml</include>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
    
    
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <classesDirectory>target/classes/</classesDirectory>
          <!-- 显示指定生成的Jar包的名字 -->
         <finalName>llmj-pay-1.0.8</finalName>
          <archive>
            <manifest>
              <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本--> 
              <useUniqueVersions>false</useUniqueVersions>
              <mainClass>com.llmj.paycenter.Application</mainClass>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
            <manifestEntries>
              <Class-Path>.</Class-Path>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>


      <!-- 将项目所依赖的Jar包复制到一个单独的文件中,完成依赖包的处理 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>install</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <type>jar</type>
              <includeTypes>jar</includeTypes>
              <useUniqueVersions>false</useUniqueVersions>
              <outputDirectory>
                ${project.build.directory}/lib
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

打包跳过单元测试

  <!-- 打包跳过单元测试 -->
      <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-surefire-plugin</artifactId>  
        <configuration>  
          <skipTests>true</skipTests>  
        </configuration>  
      </plugin> 

作者:Reno灬 出处:https://www.cnblogs.com/import-new/ 版权归作者所有,转载请注明出处
原文地址:https://www.cnblogs.com/import-new/p/13158741.html