写这篇博客主要是为了自己以后能快速的查到。
在pom.xml文件的project节点中加入以下build内容:
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.3.2</version>
- <configuration>
- <archive>
- <manifest>
-
- <addClasspath>true</addClasspath>
- <classpathPrefix>lib/</classpathPrefix>
- <mainClass>com.daks.timesheethelper.App</mainClass>
- <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
- <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
- </manifest>
- <manifestEntries>
- <Permissions>${Permissions}</Permissions>
- <Caller-Allowable-Codebase>${Caller-Allowable-Codebase}</Caller-Allowable-Codebase>
- </manifestEntries>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>package</phase>
- <configuration>
- <overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>false</overWriteSnapshots>
- <overWriteIfNewer>true</overWriteIfNewer>
- <outputDirectory>
- ${project.build.directory}/lib
- </outputDirectory>
- </configuration>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
最终的效果就是在target下多出一个lib目录,里面包含项目使用到的一些第三方的jar,或者自己的其他工程的jar,然后主jar包的MF文件中多了Main-Class和Class-Path的配置信息,这是保证该jar包可执行的条件。
参见:http://www.alanzeng.cn/2015/08/maven-executive-jar/