有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我一直在尝试以下方法:

  • 使用maven-jar-plugin,要添加一个分类器,它可以打包多个jar文件,但在/target/classes中每个jar需要一个文件夹maven-jar-plugin可以打包两个jar文件,需要不同的文件夹,如**/server/****/client/**,但我只需要更改一个文件的图表集:**/config.yml使用UTF-8,而**/config.yml使用UTF-16
  • 使用maven-resources-plugins,尝试更改图表集,但是<encoding>UTF-8</encoding>似乎不起作用
  • 我试着用maven-resources-pluginscopy-resources复制相同的内容。类文件和不同的config.yml(我在/src/main/中创建了两个文件夹,用于两个图表集/src/main/chartA/config.yml/src/main/chartB/config.yml)到两个新文件夹(在编译阶段,复制到/target/ChartA/target/ChartB),但显示mark invaild。。我不知道为什么。。而且它似乎沿着一条之字形的路线
  • 最后我尝试了<profiles>标记,但似乎无法同时打包两个概要文件

那么,在编译/打包并生成两个不同的jar包时,有没有办法替换一个资源文件或更改资源的图表集


共 (2) 个答案

  1. # 1 楼答案

    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> 
    
  2. # 2 楼答案

    谢谢大家,我终于用上了安特伦:

    <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>
    

    这将帮助您在包后更改图表集,并制作两个jar,无需在资源中再复制一个文件,我将默认的yml文件设置为UTF-8