Maven可以在一个模块中打包两个jar,文件名相同但是不同的图表集?

时间:2015-11-19 08:16:37

标签: java maven jar

我有一个项目,只有一个模块,但需要打包两个jar,使用不同的charset(只需要config.yml文件需要两个不同的资源文件夹)。

我一直尝试这样:

  • 使用maven-jar-plugin,添加分类器,它可以打包多个jar文件,但需要在/ target / classes中每个jar有一个文件夹。 maven-jar-plugin可以打包两个jar文件,需要不同的文件夹,例如**/server/****/client/**,但我只需要更改一个文件的图表集:**/config.yml和UTF-8,{ {1}}使用UTF-16
  • 使用**/config.yml,尝试更改图表集,但maven-resources-plugins似乎不起作用..
  • 我尝试使用<encoding>UTF-8</encoding>的{​​{1}}来复制相同的.class文件和不同的maven-resources-plugins(我在copy-resources中创建了两个文件夹,两个图表集config.yml/src/main/)到两个新文件夹(在编译阶段,复制到/src/main/chartA/config.yml/src/main/chartB/config.yml)但显示/target/ChartA ..我不知道我知道为什么..它似乎遵循一个曲折的过程..
  • 最后我尝试了/target/ChartB标签,但似乎无法同时打包两个配置文件..

那么,是否有任何方法可以在编译/打包时更换一个资源文件或更改资源的chartset并制作两个不同的jar包?

2 个答案:

答案 0 :(得分:0)

Try this :
    src/main/resources
       + config-utf8.yml
       + config-utf16.yml

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <id>default-jar</id>
            <configuration>
                <includes>
                    <include>**/config-utf8.yml</include>
                </includes>
                <excludes>
                    <include>**/config-utf16.yml</include>
                </excludes>
                <classifier>pack-8</classifier>
            </configuration>
        </execution>
        <execution>
            <id>special-jar</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <includes>
                    <include>**/config-utf16.yml</include>
                </includes>
                <excludes>
                    <include>**/config-utf8.yml</include>
                </excludes>
                <classifier>pack-16</classifier>
            </configuration>
        </execution>
    </executions>
</plugin> 

答案 1 :(得分:0)

感谢每一个人,我终于使用了它:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>install</phase>
            <configuration>
                <tasks>
                    <copy file="./src/main/resources/config.yml" todir="./target/ymls" encoding="UTF-8" outputencoding="UTF-16"/>
                    <copy file="./src/main/resources/plugin.yml" todir="./target/ymls" />
                    <move file="./target/${project.name}-${project.version}.jar" tofile="./target/${project.name}-UTF8-${project.version}.jar"/>
                    <jar destfile="./target/${project.name}-UTF16-${project.version}.jar">
                        <fileset dir="./pg/ymls"/>
                        <zipfileset includes="**/*.class" src="./pg/${project.name}-UTF8-${project.version}.jar"/>
                    </jar>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这会帮助你更改包后的chartset,并制作两个jar,不需要复制资源中的另外一个文件,我设置了默认的yml文件UTF-8