从不同的maven项目复制java源文件并修改其包声明

时间:2013-07-29 11:41:33

标签: maven maven-3

假设我们有两个不同的maven项目;项目A和项目B

项目B使用A并需要动态(使用maven插件?)从项目A复制源文件“A.java”,修改其包声明并编译它(项目B应该与项目A具有相同的类但是其他包裹声明..)

我正在尝试将源文件从A复制到B,然后再修改包声明并编译所有。

这是一个好方法吗?

因此,项目A将其java文件公开为资源

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

但是如何将此文件复制到B(B是A中的依赖项)? “maven-resources-plugin”是否允许从依赖项目中复制资源,如果是,我如何在“资源”中指定属性“directory” 我尝试通过在jar依赖项中指定文件的位置,但它不起作用

你还有其他建议吗?

由于

2 个答案:

答案 0 :(得分:1)

最后我通过以下步骤解决了这个问题:

1 - 使用“maven-dependency-plugin”提取(解包)我想要的内容(来自jar的源文件)。

2 - 使用“maven-antrun-plugin”执行ant命令,替换字符串,创建新包并移动修改后的源代码。 见here

3 - 使用“build-helper-maven-plugin”将编译器指向新的源包,以便将它们包含在编译阶段

PS:这三个步骤必须在“generate-sources”阶段发生!

答案 1 :(得分:0)

maven-resources-plugin允许您在编译之前将java源复制到任何地方(您可以初始化阶段),但问题在于java文件中的包声明。你也需要修改它,这在maven中并不简单

但为什么你需要这样做?为什么你需要在两个不同的包中使用相同的代码???