我有一些使用包前缀的 java 源文件(它们正在模拟一些 JDK 类)。我使用这些带有前缀的文件来运行一些单元测试。如果测试通过,我想生成一个包含源文件但从所有 java 文件中删除包前缀的 jar。
我正在使用 Maven 进行构建。有谁知道这样做的方法?本质上,我想要的是资源插件过滤功能,但它可以进行正确的搜索和替换(如:s/my.package.prefix.//g),而不是过滤 ${vars}。
我有一些使用包前缀的 java 源文件(它们正在模拟一些 JDK 类)。我使用这些带有前缀的文件来运行一些单元测试。如果测试通过,我想生成一个包含源文件但从所有 java 文件中删除包前缀的 jar。
我正在使用 Maven 进行构建。有谁知道这样做的方法?本质上,我想要的是资源插件过滤功能,但它可以进行正确的搜索和替换(如:s/my.package.prefix.//g),而不是过滤 ${vars}。
这可以通过 antrun 插件解决。首先需要将源复制到目标目录,其中:
<build>
...
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>
...
</build>
其次,您使用replace
antrun 插件的任务来替换使用准备包阶段的文件
<build>
...
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<configuration>
<tasks>
<replace token= "my.package.prefix." value="" dir="target/classes">
<include name="**/*.java"/>
</replace>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
...
</build>
这将在 process-resources 阶段将源文件复制到 target/classes,在 prepare-package 阶段对 target/classes 目录中的文件进行搜索和替换,最后它们将在 package 阶段产生震动。