【发布时间】:2010-10-15 15:51:07
【问题描述】:
我们的软件是用 Java 编写的,包含许多 (7) 个项目。
这些项目是 Netbeans ant 项目。 我正在考虑将它们转换为 maven2。
我在哪里可以找到做这种事情的一些提示?
【问题讨论】:
我们的软件是用 Java 编写的,包含许多 (7) 个项目。
这些项目是 Netbeans ant 项目。 我正在考虑将它们转换为 maven2。
我在哪里可以找到做这种事情的一些提示?
【问题讨论】:
不要读那本书。它只会让你感到困惑。请阅读这本书:“Maven - 权威指南”http://www.sonatype.com/books/maven-book/reference/。
另外,maven 站点有很多信息,但是结构很糟糕,所以你需要使用 google 来导航。
这是我的建议:
手动执行此操作,而不是使用 IDE 中的“自动”“帮助”。 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 下的任何代码,因为它构建到目标目录。您可以在仍然由 ant 构建时执行此操作。
首先改造项目中不依赖于其他模块的子模块。
现在您可以使用工件类型“pom”创建父 maven 模块 pom.xml,它由以下模块之一组成。使用伞形模块作为“父”,为第一个子模块(只有外部依赖的那个)创建一个子模块。请记住,您需要为父级指定版本。记得将子模块添加为父模块中的“模块”。当您创建这样的多模块项目时,请始终使用 ${project.version} 作为子模块中的版本。父级下的所有模块必须在一次操作中同时发布,如果您使用此设置,maven 将确保所有模块的版本字段保持相同,并在发布期间随处更新。这可能会使重新使用现有编号方案变得困难,但这并不重要。无论如何,您永远不会用完版本号。
添加必要的依赖项,并确保您可以使用来自父模块的命令“mvn clean install”一起构建父模块和子模块。
以同样的方式继续学习其余模块。对同一父项目下其他模块的依赖项也应使用 ${project.version} 作为它们所依赖的“版本”,即“与此相同的版本”。请注意,为了构建,您所依赖的模块必须使用“mvn install”构建,以便将其部署到您的本地(计算机)存储库。否则依赖模块将无法找到类。 maven 中的模块之间没有源代码依赖关系,仅依赖于安装在本地和远程存储库中的构建和打包版本。如果您来自 ant-projects,这可能会非常令人困惑。从根模块构建,直到您对此感到满意为止。需要两天时间。
不要在 IDE 中使用 maven 集成。这是个坏主意。使用 "mvn idea:idea" 或 "mvn eclipse:eclipse" 将您的工作区设置为非 maven 普通 IDE 项目。 maven 和 IDE 中的模块间依赖机制并不相同,也永远不会相同。此外,如果您有几个 mavenized 项目之间存在依赖关系,那么您希望在工作区中有几个项目之间建立依赖关系。如果您在与父模块相同的目录中创建一个名为“workspace.xml”(或其他)的单独 maven 项目文件,则可以使用 mvn idea:idea/eclipse:eclipse 执行此操作,设置为包含模块的多模块项目“ 。”和“../otherproject”(这里只有单向引用,没有父引用)。如果你运行“mvn idea:idea / eclipse:eclipse -f workspace.xml”,你会得到一个所有这些模块链接在一起的工作区。没有 IDE 集成可以让您这样做。这听起来像是很多额外的工作,但workspace.xml 文件真的很小。它不必包含所有依赖项和所有这些,只需对要在 IDE 中绑定在一起的模块的引用。
【讨论】:
我使用 Joseph Mocker 的说明成功地将 NetBeans Ant 项目迁移到 Maven 项目:http://forums.netbeans.org/ptopic55953.html 我引用了重要的部分:
【讨论】:
这不是一件容易的事,因为 Maven2 期望文件以特定的方式组织。无论如何Better Builds with Maven 是一本可以帮助您入门的免费书籍。它将帮助您了解 Maven,并且它还有一个关于迁移的章节。
【讨论】:
我已经构建了一个脚本来将 Ant 构建迁移到 Maven。您可以在此处找到更多信息:
https://github.com/ewhauser/ant2maven
它不会帮助您修复目录结构和/或任何额外的 Ant 任务,但它消除了许多繁琐的开始步骤。
【讨论】: