现有Ant构建文件的简单Mavenization

时间:2010-03-05 16:38:06

标签: maven-2 ant

如果您有一个现有的ant文件,那么将项目转换为Maven的最佳方法是什么。我已经检查过像fAnt这样的东西,但是如果我要把这些东西弄得乱七八糟,我不妨为Maven做好准备。我期望存在的东西可以基于现有的build.xml为我启动pom.xml,但我还没有找到任何东西。建议?

2 个答案:

答案 0 :(得分:1)

我不知道有什么好的自动化方法可以进行这样的迁移,因为事情可能会有所不同,所以我会一步一步地手动完成,并将现有的ant构建与未来的新构建并行,直到完成整个迁移(从技术和人的角度来看)。

首先,重构现有的Ant构建以使其在Maven约定上对齐:

  • 使事物模块化如果您的现有构建是一个巨大的整体构建,从单个源树生成多个工件,则将其分解为单独的模块,每个工件一个。
  • 更新目录结构:Maven附带标准directory layout,虽然可以自定义此布局(即为其他布局配置插件),但这并不是真正推荐的,更多的是麻烦而不是利益。因此,我将移动现有的应用程序源,配置文件,测试等以匹配Maven的布局(例如,src/main/java用于应用程序源等。)

然后,开始创建Maven构建:

  • 为每个模块创建POM:创建POM,将外部库声明为Maven依赖项(可能将它们添加到公司存储库,使用企业存储库无论如何都是企业上下文中的一种好习惯),添加模块之间的依赖关系。
  • 完成多模块构建:添加父POM(s)和继承/聚合关系。测试创建的工件没有回归。

如果您不想在工作完成之前更改任何内容并创建脚本来移动内容,则可以在单独的VCS分支中执行此操作。准备好后,合并Maven特定的东西并应用脚本。

答案 1 :(得分:1)

您可以使用maven-antrun-plugin从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中,并在Ant脚本中像这样引用它们

${com.foo.bar:my-lib:jar}

然后开始慢慢地将你的蚂蚁片段移动到纯粹的Maven中。