我有一个企业应用程序,我正在从Ant构建转换到Maven的过程中。它几乎完全转换;这是我需要解决的最后一件事。应用程序打包为一个EAR文件,其中包含两个WAR,并且具有提供应用程序的所有核心功能的JAR模块。为什么Maven JAR插件不包含某些资源?
我正在使用Freemarker模板库来生成应用程序发送的自动电子邮件的消息主体等。 Freemarker需要将它的* .ftl模板文件放在类路径中,并且由于这是核心应用程序功能,并非特定于一个WAR或另一个WAR,因此它需要位于JAR中。
行家模块,其限定了JAR具有以下POM:
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<relativePath>../../pom.xml</relativePath>
<groupId>com.company.project</groupId>
<artifactId>projectName</artifactId>
<version>1.8.0</version>
</parent>
<artifactId>core</artifactId>
<packaging>jar</packaging>
<name>Core Application</name>
<profiles>
<!-- snip -->
</profiles>
<dependencies>
<!-- snip -->
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.ftl</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<!-- snip -->
</plugins>
</build>
</project>
的* .ftl文件位于的src /主/资源/模板/,与一些在模板/的子目录中。 src/main/resources中还有其他文件 - 一些.properties和一些.xml,一些在根目录下,一些在目录结构下。
当我在这个模块上(或在父级上)运行包阶段时,作为构建过程的一部分创建的目标/类目录包含模板目录,该目录又包含所有* .ftl,*。 xml和* .properties文件与适当的目录结构。如果我手动JAR这个目录,一切都很完美。
这里有些奇怪,我迷路了:当maven-jar-plugin创建JAR时,它包含XML和属性文件,但JAR中完全没有模板目录,而且它的内容无处可查。
正如你在上面看到的,我试着明确地包括**/*。ftl。它没有区别;我可以排除整个“包含”标记,并获得完全相同的行为。
我使用Maven 3.0.5和maven-jar-plugin 2.4。