0

我想为我的项目生成一个源 jar 文件,所以我包含了 maven-source-plugin。但是,我还使用资源过滤插件在我的项目的属性文件中设置版本号。当我生成最终的 jar 文件时,属性文件已被过滤并设置了版本。但是在sources jar 中,仍然具有未过滤的属性。我希望源插件也能调用资源过滤。我怎样才能做到这一点?

这是我的 pom.xml 的(部分)

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.7</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

这是我要过滤的属性文件

version = ${project.version}

编辑

为了澄清,我的问题的根源是我有另一个项目是使用这个库构建的 GWT 项目。GWT 项目的部分要求是源代码也必须可用于任何将被编译为客户端 JavaScript 的东西。因此,该项目在类路径中同时包含已编译的 jar 和源 jar。

所以现在有两个具有相同包路径和名称的属性文件,一个存在于编译的 jar 中,一个存在于源 jar 中。

当我尝试读取此文件时,它似乎从源 jar 中选择了属性文件,该文件尚未被过滤。

4

1 回答 1

0

通常,您会maven-source-plugin为此使用 。但是,我在其文档中看到您无法从其处理中删除 src/main/resources ,同时增加target/classes其处理周期(这是您完成任务所需要做的)

因此,我认为您最好的选择是通过 maven-assembly-plugin 配置。

于 2017-02-27T11:59:46.367 回答