我想为我的项目生成一个source jar文件,所以我已经包含了maven-source-plugin。但是,我还使用资源过滤插件在我的项目的属性文件中设置版本号。当我生成最终的jar文件时,属性文件已被过滤并且版本已设置。但是在源jar中,仍然具有未经过滤的属性。我想source source插件也调用资源过滤。我怎么能这样做?
这是我的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中,另一个存在于sources jar中。
当我尝试读取此文件时,似乎从源jar中选择了属性文件,该文件尚未过滤。
答案 0 :(得分:0)
通常情况下,您可以使用maven-source-plugin
。但是,我在其文档中看到,您无法从其处理中删除src / main / resources,同时将target/classes
添加到其处理周期(这是您为完成任务而需要执行的操作)
因此,我认为最好的办法是通过maven-assembly-plugin配置。