1. maven-jar-plugin打包方式(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.sysware.HelloWorld</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
运行mvn clean package即可
在pom.xml增加如下内容
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <appendAssemblyId>false</appendAssemblyId>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- <archive>
- <manifest>
- <mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass>
- </manifest>
- </archive>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>assembly</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <build>
- <finalName>...</finalName>
- <sourceDirectory>src/main/java</sourceDirectory>
- <resources>
- <!-- 控制资源文件的拷贝 -->
- <resource>
- <directory>src/main/resources</directory>
- <targetPath>${project.build.directory}</targetPath>
- </resource>
- </resources>
- <plugins>
- <!-- 设置源文件编码方式 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <defaultLibBundleDir>lib</defaultLibBundleDir>
- <source>1.6</source>
- <target>1.6</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addClasspath>true</addClasspath>
- <classpathPrefix>lib/</classpathPrefix>
- <mainClass>.....MonitorMain</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- <!-- 拷贝依赖的jar包到lib目录 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy</id>
- <phase>package</phase>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <configuration>
- <outputDirectory>
- ${project.build.directory}/lib
- </outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- 解决资源文件的编码问题 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- <!-- 打包source文件为jar文件 -->
- <plugin>
- <artifactId>maven-source-plugin</artifactId>
- <version>2.1</version>
- <configuration>
- <attach>true</attach>
- <encoding>UTF-8</encoding>
- </configuration>
- <executions>
- <execution>
- <phase>compile</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <build>
- <resources>
- <resource>
- <targetPath>${project.build.directory}/classes</targetPath>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.0</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-shade-plugin</artifactId>
- <version>2.0</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <transformers>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>com.test.testguava.app.App</mainClass>
- </transformer>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>applicationContext.xml</resource>
- </transformer>
- </transformers>
- <shadedArtifactAttached>true</shadedArtifactAttached>
- <shadedClassifierName>executable</shadedClassifierName>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
2.使用maven打包插件:appassembler
1.打包成bat
打包命令:mvn clean package appassembler:assemble
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <!-- 生成linux, windows两种平台的执行脚本 --> <platforms> <platform>windows</platform> <platform>unix</platform> </platforms> <!-- 根目录 --> <assembleDirectory>${project.build.directory}/mall</assembleDirectory> <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 --> <repositoryName>lib</repositoryName> <!-- 可执行脚本的目录 --> <binFolder>bin</binFolder> <!-- 配置文件的目标目录 --> <configurationDirectory>conf</configurationDirectory> <!-- 拷贝配置文件到上面的目录中 --> <copyConfigurationDirectory>true</copyConfigurationDirectory> <!-- 从哪里拷贝配置文件 (默认src/main/config) --> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 --> <repositoryLayout>flat</repositoryLayout> <encoding>UTF-8</encoding> <logsDirectory>logs</logsDirectory> <tempDirectory>tmp</tempDirectory> <programs> <program> <!-- 启动类 --> <mainClass>net.test.App</mainClass> <jvmSettings> <extraArguments> <extraArgument>-server</extraArgument> <extraArgument>-Xmx2G</extraArgument> <extraArgument>-Xms2G</extraArgument> </extraArguments> </jvmSettings> </program> </programs> </configuration> </plugin>
2.打包成系统服务
打包命令:mvn clean package appassembler:generate-daemons
Usage: { console | start | stop | restart | status | dump }
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <!-- 根目录 --> <assembleDirectory>${project.build.directory}/mall</assembleDirectory> <!-- 打包的jar,以及maven依赖的jar放到这个目录里面 --> <repositoryName>lib</repositoryName> <!-- 可执行脚本的目录 --> <binFolder>bin</binFolder> <!-- 配置文件的目标目录 --> <configurationDirectory>conf</configurationDirectory> <!-- 拷贝配置文件到上面的目录中 --> <copyConfigurationDirectory>true</copyConfigurationDirectory> <!-- 从哪里拷贝配置文件 (默认src/main/config) --> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 --> <repositoryLayout>flat</repositoryLayout> <encoding>UTF-8</encoding> <logsDirectory>logs</logsDirectory> <tempDirectory>tmp</tempDirectory> <daemons> <daemon> <mainClass>net.test.App</mainClass> <platforms> <platform>jsw</platform> </platforms> <generatorConfigurations> <generatorConfiguration> <generator>jsw</generator> <includes> <include>linux-x86-32</include> <include>linux-x86-64</include> <include>windows-x86-32</include> <include>windows-x86-64</include> </includes> <configuration> <property> <name>configuration.directory.in.classpath.first</name> <value>conf</value> </property> <property> <name>wrapper.ping.timeout</name> <value>120</value> </property> <property> <name>set.default.REPO_DIR</name> <value>lib</value> </property> <property> <name>wrapper.logfile</name> <value>logs/wrapper.log</value> </property> </configuration> </generatorConfiguration> </generatorConfigurations> <jvmSettings> <!-- jvm参数 --> <systemProperties> <systemProperty>com.sun.management.jmxremote</systemProperty> <systemProperty>com.sun.management.jmxremote.port=1984</systemProperty> <systemProperty>com.sun.management.jmxremote.authenticate=false</systemProperty> <systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty> </systemProperties> </jvmSettings> </daemon> </daemons> </configuration> </plugin>