java - 在 Netbeans 中从 ant 迁移到 maven

标签 java maven-2 netbeans ant

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

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

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

最佳答案

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

此外,maven 站点有很多信息,但结构很糟糕,所以你需要使用谷歌来导航。

这是我的建议:

  • 手动执行此操作,而不是使用来自 IDE 的“自动”“帮助”。 Maven 集成还没有那么好,在任何 IDE 中都没有。
  • 确保您的程序项目被划分为一个通用的伞形模块下的模块,以便每个模块生成一个二进制工件(jar、war 等),可能伴随着该工件背后源代码的 javadoc,一个带有源代码等。基本原则是每个模块生成一个工件,包含该模块下的所有非测试代码。您可以在项目仍由 ant 构建时执行此操作。
  • 每个模块都应该符合标准的 maven 目录布局。构建目标位于 [module]/target/[output-type,例如“类”]。源代码在 [module]/src/main/[src-type e.g. 下"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 中绑定(bind)在一起的模块的引用。
  • 关于java - 在 Netbeans 中从 ant 迁移到 maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684992/

    相关文章:

    java - 在 Java 中加载共享库 : libjli. 时出错

    maven-2 - 编写 Maven 插件/Mojo : how do you make a goal force the execution of other goals?

    java - 为什么由于假设失败而跳过的 junit 测试未报告为已跳过?

    java - java非法转义字符

    java - 将 native DLLS 添加到 Java 运行时 (JIntellitype) 时出现问题

    java - 为什么非静态最终成员变量不需要遵循常量命名约定?

    java - 即使安装 Hibernate Eclipse 插件后,Hibernate Perspective 也不会出现在 Luna 中

    java - 无法从模拟组件类调用函数

    java - 单击下一步播放新的音轨

    maven-2 - Maven : property substitution not done for/project/version tag of pom?