37

我有一些使用包前缀的 java 源文件(它们正在模拟一些 JDK 类)。我使用这些带有前缀的文件来运行一些单元测试。如果测试通过,我想生成一个包含源文件但从所有 java 文件中删除包前缀的 jar。

我正在使用 Maven 进行构建。有谁知道这样做的方法?本质上,我想要的是资源插件过滤功能,但它可以进行正确的搜索和替换(如:s/my.package.prefix.//g),而不是过滤 ${vars}。

4

2 回答 2

50

你也可以使用

http://code.google.com/p/maven-replacer-plugin/

100% maven,做你想做的,还有更多

于 2011-07-25T09:56:55.830 回答
34

这可以通过 antrun 插件解决。首先需要将源复制到目标目录,其中:

<build>
  ...
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.java</include>
      </includes>
    </resource>
  </resources>
  ...
</build>

其次,您使用replaceantrun 插件的任务来替换使用准备包阶段的文件

<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 阶段产生震动。

于 2010-02-04T01:08:35.380 回答