【问题标题】:Changing an ant project to maven [duplicate]将ant项目更改为maven [重复]
【发布时间】:2013-12-15 20:21:50
【问题描述】:

问题很简单:有一个我应该移植到 maven 的 ant 项目。由于 maven 有一个推荐的/预期的项目目录结构,如果我重新构建 java 文件的目录,这将涉及大量的手动工作。另一方面,使用当前项目的包,项目也不会对这个解决方案很满意,更不用说其他了。

您有什么想法,如何在不更改目录结构的情况下迁移到 maven?也提前谢谢你。

【问题讨论】:

  • 这是可以简单标记的问题之一:我们希望新事物像旧事物一样 - 那么您为什么想要新事物。
  • 不确定 Maven,但如果您不想使用常规结构,Gradle 允许您指定目录结构。
  • Grzegorz,问题是该项目是一个现有项目,但新功能发生了变化,并且使用 Maven 整个构建管理会更容易,甚至是外部依赖项的管理。 Lesleh,感谢 Gradle 的想法。
  • 三心二意地使用 maven 并没有帮助。 maven 的一个核心领域是依赖管理。您可以使用带有 ant 的 IVY 或 gradle 之类的工具(快速成熟)来实现这一点。
  • ANT 和 Maven 是非常不同的工具,采用不同的方法,几乎​​无法协调。 Maven 就是要标准化您的构建,以便插件可以对代码的设置方式做出假设……我一直在寻找多年,但尚未在 ANT 中看到成功的“通用构建方法”。每个建筑工程师都有自己的意见,这很棒,但却是标准的敌人。您可以做的最好的事情是重组您的 ANT 构建以利用 Maven 依赖管理。在此代码上取得高峰,这可能有助于过渡。 github.com/myspotontheweb/ant2ivy

标签: java maven ant


【解决方案1】:

强烈建议你使用 Maven 的标准目录结构,但是你可以在你的 pom.xml 中设置一个自定义的 src 目录。比如:

<build>
 <sourceDirectory>path\to\actual\src</sourceDirectory>
</build>

您可能正在寻找以下内容:Handling unconventional source directory for a web project in maven

编辑:以下是在 Maven Super POM 中设置的默认设置列表,可以在项目的 pom.xml 中覆盖

<build>
    <directory>target</directory>
    <outputDirectory>target/classes</outputDirectory>
    <finalName>${artifactId}-${version}</finalName>
    <testOutputDirectory>target/test-classes</testOutputDirectory>
    <sourceDirectory>src/main/java</sourceDirectory>
    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>
</build>

【讨论】:

    【解决方案2】:

    我会强烈建议您承诺进行重组。如果你不这样做,你只会增加你的问题。

    但是,如果您真的必须保持原来的结构,您可以使用某种软文件夹。在 Windows 上,您可以使用 SymLinks - 我希望其他操作系统还有其他替代方案。

    在你的源文件夹旁边新建一个文件夹(我叫我的Maven)。在该文件夹中,构建一个镜像所需的Maven 结构的结构,但仅将pom 文件放入其中。将symlinks 设为旧位置。

    可以自动执行此操作,但需要一些工作。

    我只会在您处于过渡阶段而某些开发人员仍在使用 ant 进行构建或您正在将代码过渡到 SCC 系统中的新结构时推荐此解决方案。

    【讨论】:

    • 感谢您的快速回复。我在这个解决方案中看到的问题是目录结构的变化会牵涉到 java 源文件中的代码更改,因为应该调整包名称。如果包名称不反映编译时的目录结构,这将是必要的。或者我误解了你的评论。
    • @Tamas - 我认为你误解了 Maven 结构 - 你的旧 com 文件夹仍然存在于 Maven 中,但作为 src/main/java/com。您的所有包裹都保持不变。 Web 应用程序有些奇怪,但库和 POJO 都很好。
    猜你喜欢
    • 2012-01-12
    • 1970-01-01
    • 2011-05-01
    • 2014-05-25
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2013-03-25
    相关资源
    最近更新 更多