如何在JAR中包含静态文件
我有一个ant构建,它只生成一个装满html页面的JAR。我也想用maven做同样的事情。我目前正在将文件复制到一个新文件夹中,但这些文件并没有添加到最终的JAR中。当我运行命令jar tf mavenjar.jar
我没有看到我的终端中列出的文件。看起来是这样的:
click here
当我在Ant生成的JAR上运行相同的命令时,我看到以下内容:
click here
这是我的POM
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>${basedir}/moveTheseFiles</directory>
<targetPath>${basedir}/newFileLocation</targetPath>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
您知道要将移动到JAR的文件包括在内可能会遗漏什么内容吗?
解决方案
有两种方法可以实现这一点。遵循有关配置的约定-或对其进行配置。
约定重于配置
将静态文件复制到JAR中的最简单方法是使用默认文件夹。您在那里添加的所有文件都将添加到您的JAR文件中。您的pom.xml可以简化为:<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
</build>
</project>
非默认文件夹
当您确实需要将文件放在另一个文件夹中时,您的配置几乎是正确的。只缺少includes
部分。您必须告诉Maven包含指定文件夹中的所有文件。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>moveTheseFiles</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
注意:您似乎要创建一个Web应用程序。也许您想创建一个war
文件。要实现这一点,您只需设置
<packaging>war</packaging>
在pom.xml中。然后是所有网络资源(HTMLPages、CSS...)应位于src/main/webapp
下,并将被复制到WAR的根文件夹中。请注意,src/main/resources
中的文件将被复制到生成的WAR中的WEB-INF/classes
。
相关文章