Java 在Maven构建的JAR中多次包含具有不同名称的文件

Java 在Maven构建的JAR中多次包含具有不同名称的文件,java,maven,localization,resourcebundle,Java,Maven,Localization,Resourcebundle,我使用Maven的resource标记处理最终JAR中包含的Java资源包: 朗/ 真的 ${basedir}/src/main/resources/ 本地化*.properties 由于自动资源加载的性质,我需要将英文文件包含两次:作为标准英文文件(localization\u en.properties)和在找不到更具体的本地化时提供回退的基础文件(localization.properties)。目前,这两个文件都存在于资源目录中,即使它们的内容完全相同 我正在寻找一种方法,让Mave

我使用Maven的resource标记处理最终JAR中包含的Java资源包:


朗/
真的
${basedir}/src/main/resources/
本地化*.properties
由于自动资源加载的性质,我需要将英文文件包含两次:作为标准英文文件(
localization\u en.properties
)和在找不到更具体的本地化时提供回退的基础文件(
localization.properties
)。目前,这两个文件都存在于资源目录中,即使它们的内容完全相同


我正在寻找一种方法,让Maven复制当前的
本地化\u en.properties
,并将其包含在基本名称中,这样我就不再需要资源目录中的两个单独的文件了。

我相信您可以使用ant copy任务完成您需要的任务。大概是这样的:


org.apache.maven.plugins
maven antrun插件
1.7
复制文件
编译
跑

您可以使用Maven assembly插件来实现这一点。从本质上讲,您可以使用目标目录中的类(其中已经包含您正常复制的资源)从头构建一个JAR,然后使用新名称添加特定资源的副本

注意,为了精确匹配您通常在构建中得到的内容,您必须手动将
pom.properties
pom.xml
复制到结果JAR中。也许一个过路的评论者会知道一种自动完成的方法


例子
罐子
假的
${project.build.outputDirectory}
/
${basedir}/src/main/resources/example.txt
example.txt2
/
${project.build.directory}/maven-archiver/pom.properties
META-INF/maven/${project.groupId}/${project.artifactId}
${basedir}/pom.xml
META-INF/maven/${project.groupId}/${project.artifactId}
注意:如果您打算创建一个带有依赖项样式输出(即自动包含所有依赖项)的jar,那么有一种更简洁的方法来实现相同的目标:


例子
罐子
假的
真的
真的
${basedir}/src/main/resources/example.txt
example.txt2
/

我认为我们不能使用maven来复制或追加文件。您应该创建这个自定义appender,并将文件插入目标,之后maven可以用于以后的构建