Java 在Netbeans中从ant迁移到maven

Java 在Netbeans中从ant迁移到maven,java,maven-2,netbeans,ant,Java,Maven 2,Netbeans,Ant,我们的软件是用Java编写的,包含许多(7)个项目 这些项目是Netbeans ant项目。 我正在考虑把它们转换成maven2 在哪里可以找到做这些事情的提示?这不是一项容易的任务,因为Maven2希望以特定的方式组织文件。无论如何,这是一本免费的书,应该让你开始。它将帮助您理解Maven,它还有一章介绍迁移。不要读那本书。这只会让你感到困惑。读这本书:“Maven-权威指南” 另外,maven站点有很多信息,但是结构很糟糕,所以你需要使用google在其中导航 以下是我的建议: 手动执行此操

我们的软件是用Java编写的,包含许多(7)个项目

这些项目是Netbeans ant项目。 我正在考虑把它们转换成maven2


在哪里可以找到做这些事情的提示?

这不是一项容易的任务,因为Maven2希望以特定的方式组织文件。无论如何,这是一本免费的书,应该让你开始。它将帮助您理解Maven,它还有一章介绍迁移。

不要读那本书。这只会让你感到困惑。读这本书:“Maven-权威指南”

另外,maven站点有很多信息,但是结构很糟糕,所以你需要使用google在其中导航

以下是我的建议:

  • 手动执行此操作,而不是使用IDE中的“automagic”“help”。Maven集成还不能很好地工作,在任何IDE中都不能

  • 确保您的程序项目在一个通用的伞形模块下被划分为多个模块,以便每个模块生成一个二进制工件(jar、war等),可能附带该工件背后的源代码的javadoc、带有源代码的zip等。基本原则是每个模块生成一个工件,包含该模块下的所有非测试代码。您可以在项目仍由ant构建时执行此操作

  • 每个模块应符合标准maven目录布局。生成目标位于[模块]/target/[输出类型,例如“类”]下。源代码位于[module]/src/main/[src-type,例如“java”]和[module]/test/[src-type]下。工件由src/main下的所有代码组成,而src/test下的所有代码都不包含,因为它构建到目标目录。您可以在ant仍在构建时执行此操作

  • 首先转换不依赖于项目中其他模块的子模块

  • 现在您可以创建工件类型为“pom”的父maven模块pom.xml,它由以下模块之一组成。使用伞式模块作为“父”,为第一个子模块(仅具有外部依赖项的子模块)创建子模块。请记住,您需要为父级指定版本。记住也要将子模块作为“模块”添加到父模块中。创建这样的多模块项目时,始终在子模块中使用${project.version}作为版本。父模块下的所有模块必须在单个操作中同时发布,如果使用此设置,maven将确保所有模块的版本字段保持不变,并在发布过程中到处更新。这可能会使重新使用现有的编号方案变得困难,但这并不重要。无论如何,您永远不会用完版本号

  • 添加必要的依赖项,并确保可以使用来自父模块的命令“mvn clean install”一起构建父模块和子模块

  • 以相同的方式处理其余模块。对同一父项目下其他模块的依赖关系也应使用${project.version}作为它们所依赖的“版本”,即“与此版本相同”。请注意,为了进行构建,您所依赖的模块必须使用“mvn安装”进行构建,以便将其部署到本地(计算机)存储库中。否则,依赖模块将无法找到类。maven中的模块之间没有源代码依赖关系,只有本地和远程存储库中安装的构建和打包版本的依赖关系。如果您来自ant项目,这可能会非常混乱。从根模块开始构建,直到您对此感到满意为止。需要两天时间

  • 不要在IDE中使用maven集成。这是个坏主意。使用“mvn idea:idea”或“mvn eclipse:eclipse”将您的工作区设置为非maven普通IDE项目。maven和IDE中的模块间依赖机制并不相同,也永远不会相同。此外,如果您有多个mavenized项目,它们之间存在依赖关系,那么您希望在工作区中有多个这样的项目,并在它们之间设置依赖关系。如果您在与父模块相同的目录中创建一个单独的名为“workspace.xml”(或其他任何文件)的maven项目文件,将其设置为包含模块“.”和“./otherproject”(此处仅单向引用,不返回父引用)的多模块项目,则可以使用mvn idea:idea/eclipse:eclipse执行此操作。如果您运行“mvn idea:idea/eclipse:eclipse-f workspace.xml”,您将得到一个包含所有这些模块链接在一起的工作区。没有IDE集成允许您这样做。这听起来需要做很多额外的工作,但是workspace.xml文件非常小。它不必包含所有依赖性的东西,只包含对要在IDE中绑定在一起的模块的引用


  • 我已经构建了一个脚本来将Ant构建迁移到Maven。您可以在此处找到更多信息:


    它不会帮助您修复目录结构和/或任何其他Ant任务,但它删除了许多繁琐的开始步骤。

    我发现迁移是不必要的。我真正需要的是自动下载依赖项(库)

    这也是通过使用maven存储库实现的


    我用解决了将项目从ant转换为ant+ivy的问题。

    我使用Joseph Mocker的说明成功地将NetBeans ant项目迁移到Maven项目: 我引述重要部分:

  • 关闭项目
  • 将build.xml、nbproject文件/文件夹重命名为NB无法识别的名称
  • 关闭并重新启动NB(这样项目的所有内存缓存知识都消失了)
  • 从其他项目复制一个空pom
  • 在NB中打开项目备份(NB现在应将其标识为maven项目)
  • 按照maven的方式重新排列文件(™)
    没有svn netbeans:netbeans。但是NetBean