我有一些使用包前缀的java源文件(它们模拟一些JDK类)。我使用带有前缀的这些文件来对抗某些单元测试。如果测试通过,我想生成一个包含源文件的jar,但是从所有java文件中删除了包前缀。
我正在使用maven进行构建。有没有人知道这样做的方法?基本上我想要的是类似于资源插件过滤功能,但它可以正确搜索和替换(例如:s / my.package.prefix .// g),而不是过滤$ {vars}。
答案 0 :(得分:44)
答案 1 :(得分:27)
这可以通过antrun插件解决。首先需要将源复制到目标目录,使用:
<build>
...
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>
...
</build>
其次,您使用antrun插件的replace
任务使用准备包阶段替换文件
<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>
这将在源 - 资源阶段将源文件复制到目标/类,在prepare-package阶段对target / classes目录中的文件进行搜索和替换,最后它们会在包中震动相。