Maven 2 现有Ant构建文件的简单Mavenization
如果您有一个现有的ant文件,那么将项目转换为Maven的最佳方式是什么。我查过范特之类的东西,但如果我要搞砸这些东西,我还不如对马文全力以赴。我希望存在一些东西,可以基于现有的build.xml为我启动pom.xml,但我还没有找到任何东西。建议?我不知道有什么好的自动化方法来完成这样的迁移,因为事情可能太不一样了,所以我会手动一步一步地完成,并保持现有的ant构建与未来的新构建并行,直到整个迁移完成(从技术和人工角度来看) 首先,重构现有的Ant构建,使其与Maven约定保持一致:Maven 2 现有Ant构建文件的简单Mavenization,maven-2,ant,Maven 2,Ant,如果您有一个现有的ant文件,那么将项目转换为Maven的最佳方式是什么。我查过范特之类的东西,但如果我要搞砸这些东西,我还不如对马文全力以赴。我希望存在一些东西,可以基于现有的build.xml为我启动pom.xml,但我还没有找到任何东西。建议?我不知道有什么好的自动化方法来完成这样的迁移,因为事情可能太不一样了,所以我会手动一步一步地完成,并保持现有的ant构建与未来的新构建并行,直到整个迁移完成(从技术和人工角度来看) 首先,重构现有的Ant构建,使其与Maven约定保持一致: 使事情
- 使事情模块化:如果您现有的构建是一个大的整体构建,从单个源代码树生成多个工件,请将其分解为单独的模块,每个工件一个
- 更新目录结构:Maven提供了一个标准的和,虽然可以自定义此布局(即为另一个布局配置插件),但这并不是真正的建议,更多的是麻烦而不是好处。因此,我会移动现有的应用程序源、配置文件、测试等,以匹配Maven的布局(例如,应用程序源的
,等等)src/main/java
- 为每个模块创建POM:创建POM,将外部库声明为Maven依赖项(可能将它们添加到企业存储库,在企业上下文中使用企业存储库是一种很好的做法),在模块之间添加依赖项
- 完成多模块构建:添加父级POM和继承/聚合关系。测试创建的工件是否没有回归
如果您不想更改任何内容,可以在单独的VCS分支中执行此工作,直到工作完成并创建脚本来移动内容。准备好后,合并特定于Maven的内容并应用脚本。您可以使用Maven antrun插件从Maven运行Ant脚本。您的pom.xml将如下所示:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>${ant-nodeps.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>init</id>
<phase>compile</phase>
<configuration>
<tasks>
<!-- Ant code goes here -->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
</project>
然后开始慢慢地把你的蚂蚁的碎片移动到纯Maven的东西中
${com.foo.bar:my-lib:jar}