下面我将详细讲解使用Maven打包时包含资源文件和源码到jar的方法。
1. 配置maven-assembly-plugin插件
首先需要在项目的pom.xml文件中添加maven-assembly-plugin
插件的配置。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
上述配置中,包含以下几个重要的配置项。
finalName
: 指定打包后的文件名。appendAssemblyId
: 默认为true,拼接assembly id(assembly id默认为jar-with-dependencies
)。manifest
: 配置MANIFEST.MF文件中的Main-Class信息,指定程序的入口类。archive
: 配置打包后的jar文件内容,包括META-INF文件夹和class文件。descriptorRefs
: 指定应该包含哪些资源文件。resources
: 指定要打包的资源文件,可以指定文件夹或文件。
2. 示例一
假设我们的项目结构如下所示。
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- example
| | `-- Main.java
| `-- resources
| |-- config.properties
| `-- log4j.properties
`-- test
|-- java
| `-- com
| `-- example
| `-- MainTest.java
`-- resources
`-- test.properties
我们需要打包的内容包括src/main/resources
文件夹下的所有.properties
文件和源码文件。
- 在pom.xml中配置
maven-assembly-plugin
插件。
具体配置如下。
xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>my-app-1.0-SNAPSHOT</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 执行maven命令进行打包。在项目的根目录下执行以下命令:
mvn package
-
打包完成后,在
my-app/target
文件夹下可以找到my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
文件。 -
解压缩
my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
文件,可以看到解压缩后的文件结构如下。
META-INF
org
com
config.properties
log4j.properties
可以看到,config.properties
和log4j.properties
已经包含在打包后的jar文件中了。
3. 示例二
假设我们的项目结构如下所示。
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- example
| | `-- Main.java
| `-- resources
| |-- images
| | `-- icon.png
| `-- messages
| `-- welcome.txt
`-- test
|-- java
| `-- com
| `-- example
| `-- MainTest.java
`-- resources
|-- test.properties
`-- testData.sql
此时我们的需求是打包src/main/resources
文件夹下的所有资源文件以及源码文件。
- 在pom.xml中配置
maven-assembly-plugin
插件。
具体配置如下。
xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>my-app-1.0-SNAPSHOT</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<resources>
<resource>
<directory>src/main</directory>
<filtering>true</filtering>
<includes>
<include>**/*.java</include>
<include>**/*.properties</include>
<include>**/*.png</include>
<include>**/*.txt</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 执行maven命令进行打包。在项目的根目录下执行以下命令:
mvn package
-
打包完成后,在
my-app/target
文件夹下可以找到my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
文件。 -
解压缩
my-app-1.0-SNAPSHOT-jar-with-dependencies.jar
文件,可以看到解压缩后的文件结构如下。
META-INF
org
com
images
messages
test.properties
testData.sql
可以看到,images
文件夹中的icon.png
和messages
文件夹中的welcome.txt
已经包含在打包后的jar文件中了。
以上就是使用Maven打包时包含资源文件和源码到jar的方法的完整攻略了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Maven打包时包含资源文件和源码到jar的方法 - Python技术站