Jak*_*obb 7 maven-3 maven maven-jar-plugin
我有一个企业应用程序,我正在从Ant构建转换为Maven.它几乎完全转换; 这是我需要解决的最后一件事.应用程序打包为一个EAR文件,其中包含两个WAR,并具有一个JAR模块,该模块提供应用程序的所有核心功能.
我正在使用Freemarker模板库来生成应用程序发送的自动电子邮件的消息正文.Freemarker需要将*.ftl模板文件放在类路径上,因为这是一个不是特定于一个WAR或另一个WAR的核心应用程序功能,所以它需要在JAR中.
定义JAR的Maven模块具有以下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>
Run Code Online (Sandbox Code Playgroud)
*.ftl文件位于src/main/resources/template /,其中一些位于template /中的子目录中.src/main/resources中还有其他文件 - 一些.properties和一些.xml,一些位于根目录,一些位于目录结构下.
当我在这个模块(或父模块)上运行包阶段时,作为构建过程的一部分创建的目标/ classes目录包含模板目录,该模板目录又包含所有*.ftl,*.xml和*具有适当目录结构的.properties文件.如果我手动JAR这个目录,一切都很完美.
这里变得奇怪而且我迷路了:当maven-jar-plugin创建JAR时,它包含XML和属性文件,但是JAR中完全没有模板目录,并且其内容无处可寻.
如您所见,我尝试明确地包括**/*.ftl.它没有任何区别; 我可以排除整个"包含"标记,我得到完全相同的行为.
我正在使用Maven 3.0.5和maven-jar-plugin 2.4.
Jak*_*obb 12
在提交这个问题之后,我找到了答案.
在父POM中,我有以下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<includes>
<include>**/*.class</include>
<include>**/*.jdo</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我添加**/*.ftl到包含列表中,现在它正在运行.
编辑:更好的是,我完全删除了配置标签,它仍在工作.我认为这是一个残余,在我发现.properties文件和我在类路径上需要的其他东西需要在src/main/resources而不是src/main/java之前.
| 归档时间: |
|
| 查看次数: |
16794 次 |
| 最近记录: |