java maven 项目打包

maven打包pom配置

 下面的方法是把项目依赖的类都放到jar包里,这样会把jar包变的很胖

1、 maven-shade-plugin

这种方式,打包后可以直接运行,lib包是封装在jar包里的

      <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.iflytek.maven.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

 

2、生成fat的jar包

<build>
  <finalName>dateutils</finalName>
  <plugins>
 
   <!-- download source code in Eclipse, best practice -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.9</version>
    <configuration>
     <downloadSources>true</downloadSources>
     <downloadJavadocs>false</downloadJavadocs>
    </configuration>
   </plugin>
 
   <!-- Set a compiler level -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
     <source>${jdk.version}</source>
     <target>${jdk.version}</target>
    </configuration>
   </plugin>
 
   <!-- Maven Assembly Plugin -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>
    <configuration>
     <!-- get all project dependencies -->
     <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
     </descriptorRefs>
     <!-- MainClass in mainfest make a executable jar -->
     <archive>
       <manifest>
      <mainClass>com.iflytek.maven.Main</mainClass>
       </manifest>
     </archive>
 
    </configuration>
    <executions>
      <execution>
     <id>make-assembly</id>
                                        <!-- bind to the packaging phase -->
     <phase>package</phase>
     <goals>
      <goal>single</goal>
     </goals>
      </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

Two jar files will be created in the target folder.

  1. dateutils.jar – Only your project classes
  2. dateutils-jar-with-dependencies.jar – Project and dependency classes in a single jar.

2、把源码打包,项目依赖的lib包放在另一个文件夹里


 <build>
  <finalName>song-order</finalName>
  <defaultGoal>compile</defaultGoal>
  <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>
           <goal>unpack</goal>
          </goals>
         </pluginExecutionFilter>
         <action>
          <ignore />
         </action>
        </pluginExecution>
       </pluginExecutions>
      </lifecycleMappingMetadata>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
     <source>1.6</source>
     <target>1.6</target>
     <encoding>UTF-8</encoding>
    </configuration>
   </plugin>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
     <archive>
      <manifest>
       <addClasspath>true</addClasspath>
       <classpathPrefix>lib/</classpathPrefix>
       <mainClass>com.iflytek.zxdg.songorder.client.Client</mainClass>
      </manifest>
     </archive>
    </configuration>
   </plugin>
   <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>
       <outputDirectory>${project.build.directory}/lib</outputDirectory>
      </configuration>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

这样会生成一个song-order.jar 和lib文件夹 ,这样做每次部署只要不新增依赖,就可以直接替换jar即可

3、下面介绍一种更为强大的方法 ,支持打包后,生成zip文件,只要解压zip文件,双击bin文件夹下的start.bat 或者start.sh即可执行,且目录分配清晰

自己还没有搞明白,但是改改还是可以用的,这个直接上传一个包,后面可以拿来改改

涉及公司机密还是算了吧,上面的已经够用了

 

maven打包pom配置  下面的方法是把项目依赖的类都放到jar包里,这样会把jar包变的很胖 1、  maven-shade-plugin 这种方式,打包后可以直接运行,lib包是封装在jar包里的
      <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.iflytek.maven.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  2、生成fat的jar包 <build>
  <finalName>dateutils</finalName>
  <plugins>
 
   <!-- download source code in Eclipse, best practice -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.9</version>
    <configuration>
     <downloadSources>true</downloadSources>
     <downloadJavadocs>false</downloadJavadocs>
    </configuration>
   </plugin>
 
   <!-- Set a compiler level -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
     <source>${jdk.version}</source>
     <target>${jdk.version}</target>
    </configuration>
   </plugin>
 
   <!-- Maven Assembly Plugin -->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>
    <configuration>
     <!-- get all project dependencies -->
     <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
     </descriptorRefs>
     <!-- MainClass in mainfest make a executable jar -->
     <archive>
       <manifest>
      <mainClass>com.iflytek.maven.Main</mainClass>
       </manifest>
     </archive>
 
    </configuration>
    <executions>
      <execution>
     <id>make-assembly</id>
                                        <!-- bind to the packaging phase -->
     <phase>package</phase>
     <goals>
      <goal>single</goal>
     </goals>
      </execution>
    </executions>
   </plugin>
  </plugins>
 </build> Two jar files will be created in the   target  folder.
  1. dateutils.jar – Only your project classes
  2. dateutils-jar-with-dependencies.jar – Project and dependency classes in a single jar.

2、把源码打包,项目依赖的lib包放在另一个文件夹里


 <build>
  <finalName>song-order</finalName>
  <defaultGoal>compile</defaultGoal>
  <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>
           <goal>unpack</goal>
          </goals>
         </pluginExecutionFilter>
         <action>
          <ignore />
         </action>
        </pluginExecution>
       </pluginExecutions>
      </lifecycleMappingMetadata>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
     <source>1.6</source>
     <target>1.6</target>
     <encoding>UTF-8</encoding>
    </configuration>
   </plugin>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
     <archive>
      <manifest>
       <addClasspath>true</addClasspath>
       <classpathPrefix>lib/</classpathPrefix>
       <mainClass>com.iflytek.zxdg.songorder.client.Client</mainClass>
      </manifest>
     </archive>
    </configuration>
   </plugin>
   <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>
       <outputDirectory>${project.build.directory}/lib</outputDirectory>
      </configuration>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>

这样会生成一个song-order.jar 和lib文件夹 ,这样做每次部署只要不新增依赖,就可以直接替换jar即可

3、下面介绍一种更为强大的方法 ,支持打包后,生成zip文件,只要解压zip文件,双击bin文件夹下的start.bat 或者start.sh即可执行,且目录分配清晰

自己还没有搞明白,但是改改还是可以用的,这个直接上传一个包,后面可以拿来改改

涉及公司机密还是算了吧,上面的已经够用了

猜你喜欢

转载自wt-kelly.iteye.com/blog/2210304