我们的软件是用Java编写的,包含许多(7)个项目。
这些项目是Netbeans蚂蚁项目。 我正在考虑将它们转换为maven2。
我在哪里可以找到做这种事情的一些提示?
答案 0 :(得分:14)
不要读那本书。它只会让你感到困惑。请改为阅读本书:“Maven - 权威指南”http://www.sonatype.com/books/maven-book/reference/。
此外,maven网站有很多信息,但结构很糟糕,所以你需要使用google进行导航。
这是我的建议:
手动执行此操作,而不是使用IDE中的“automagic”“帮助”。 Maven集成不能很好地工作,而不是在任何IDE中。
确保您将程序项目划分为一个共同的伞形模块下的模块,以便每个模块生成一个单独的二进制工件(jar,war,...),可能还有后面的源代码的javadoc工件,带有源代码的zip等。基本原则是每个模块产生一个工件,包含该模块下的所有非测试代码。您可以在项目仍由ant构建时执行此操作。
每个模块都应符合标准的maven目录布局。构建目的地位于[module] / target / [output-type,例如, “类”。源代码在[module] / src / main / [src-type下,例如“java”]和[module] / test / [src-type]。该工件包含src / main下的所有代码,以及src / test下的所有代码,因为它构建到目标目录。你可以在蚂蚁建造的同时做到这一点。
首先转换不依赖于项目中其他模块的子模块。
现在,您可以使用工件类型“pom”创建父maven模块pom.xml,其中包含以下模块之一。使用伞形模块作为“父”,为第一个子模块(仅具有外部依赖性的子模块)创建子模块。请记住,您需要为父级指定版本。请记住将子模块添加为父模块中的“模块”。在创建这样的多模块项目时,始终在子模块中使用$ {project.version}作为版本。父级下的所有模块必须在一次操作中同时发布,如果使用此设置,maven将确保版本字段在所有模块中保持不变,并在发布期间随处更新。这可能使重用现有的编号方案变得困难,但这并不重要。无论如何,你永远不会用完版本号。
添加必要的依赖项,并确保可以使用父模块中的命令“mvn clean install”一起构建父模块和子模块。
以相同的方式继续执行其余模块。对同一父项目下的其他模块的依赖性也应使用$ {project.version}作为它们所依赖的“版本”,意思是“与此版本相同”。注意,为了构建,必须使用“mvn install”构建您所依赖的模块,以便将其部署到本地(计算机)存储库。否则,依赖模块将无法找到类。 maven中的模块之间没有源代码依赖关系,只有安装在本地和远程存储库中的构建和打包版本的依赖关系。如果你来自蚂蚁项目,这可能会非常混乱。从根模块构建,直到您对此感到满意为止。这需要两天时间。
不要在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)
答案 4 :(得分:0)
我使用Joseph Mocker的指令将NetBeans Ant项目成功迁移到Maven项目:http://forums.netbeans.org/ptopic55953.html 我引用了重要的部分: