在Netbeans中从ant迁移到maven

时间:2009-03-26 09:01:07

标签: java maven-2 netbeans ant

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

这些项目是Netbeans蚂蚁项目。 我正在考虑将它们转换为maven2。

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

5 个答案:

答案 0 :(得分:14)

不要读那本书。它只会让你感到困惑。请改为阅读本书:“Maven - 权威指南”http://www.sonatype.com/books/maven-book/reference/

此外,maven网站有很多信息,但结构很糟糕,所以你需要使用google进行导航。

这是我的建议:

  1. 手动执行此操作,而不是使用IDE中的“automagic”“帮助”。 Maven集成不能很好地工作,而不是在任何IDE中。

  2. 确保您将程序项目划分为一个共同的伞形模块下的模块,以便每个模块生成一个单独的二进制工件(jar,war,...),可能还有后面的源代码的javadoc工件,带有源代码的zip等。基本原则是每个模块产生一个工件,包含该模块下的所有非测试代码。您可以在项目仍由ant构建时执行此操作。

  3. 每个模块都应符合标准的maven目录布局。构建目的地位于[module] / target / [output-type,例如, “类”。源代码在[module] / src / main / [src-type下,例如“java”]和[module] / test / [src-type]。该工件包含src / main下的所有代码,以及src / test下的所有代码,因为它构建到目标目录。你可以在蚂蚁建造的同时做到这一点。

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

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

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

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

  8. 不要在IDE中使用maven集成。这是个坏主意。使用“mvn idea:idea”或“mvn eclipse:eclipse”将工作区设置为非maven普通IDE项目。 maven和IDE中的模块间依赖关系机制并不相同,也永远不会。此外,如果您有几个具有依赖关系的mavenized项目,您希望在工作区中具有其中的几个,并在它们之间设置依赖关系。您可以使用mvn idea:idea / eclipse:eclipse,如果您在与父模块相同的目录中创建一个名为“workspace.xml”(或其他)的单独maven项目文件,则设置为包含模块的多模块项目“ “。和“../otherproject”(这里只有单向引用,没有父级引用)。如果您运行“mvn idea:idea / eclipse:eclipse -f workspace.xml”,您将获得一个工作空间,其中所有这些模块都链接在一起。没有IDE集成可以让你这样做。这听起来像很多额外的工作,但workspace.xml文件非常小。它不必包含所有依赖项内容,只需要包含对要在IDE中绑定的模块的引用。

答案 1 :(得分:0)

这不是一件容易的事,因为Maven2希望以特定的方式组织文件。无论如何Better Builds with Maven是一本免费的书,可以帮助你入门。它将帮助您理解Maven,它还有一章关于迁移。

答案 2 :(得分:0)

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

https://github.com/ewhauser/ant2maven

它无法帮助您修复目录结构和/或任何其他Ant任务,但它删除了很多繁琐的步骤。

答案 3 :(得分:0)

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

这也是由Ivy实现的,尽管如此,它还使用了maven存储库。

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

答案 4 :(得分:0)

我使用Joseph Mocker的指令将NetBeans Ant项目成功迁移到Maven项目:http://forums.netbeans.org/ptopic55953.html 我引用了重要的部分:

  1. 关闭项目
  2. 将build.xml,nbproject文件/文件夹重命名为NB以使其无法识别它们。
  3. 关闭并重新启动NB(因此项目的任何内存缓存知识都消失了)
  4. 从其他项目中复制一个空的pom。
  5. 在NB中打开项目备份(NB现在应将其识别为maven项目)
  6. 重新排列文件以遵循maven way(™)