在Netbeans中从蚂蚁迁移到maven

2022-09-03 14:53:46

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

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

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


答案 1

不要读那本书。它只会让你感到困惑。请阅读这本书:“Maven - The Definitive Guide”http://www.sonatype.com/books/maven-book/reference/

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

这是我的建议:

  1. 手动执行此操作,而不是使用IDE的“自动魔法”“帮助”。Maven集成还没有那么好用,在任何IDE中都没有。

  2. 确保将你的程序项目划分为一个通用伞形模块下的模块,以便每个模块产生一个二进制工件(jar,war,...),可能伴随着该工件背后的源代码的javadoc,带有源代码的邮政编码等。基本原理是每个模块生成一个工件,其中包含该模块下的所有非测试代码。您可以在项目仍由 ant 构建时执行此操作。

  3. 每个模块都应符合标准的 maven 目录布局。构建目标位于 [module]/target/[output-type,例如 “classes”] 下。源代码位于 [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 项目,其间有依赖项,则希望在工作区中设置其中的几个项目,并在这些项目之间设置依赖项。如果您与父模块在同一目录中创建一个名为“workspace.xml”(或其他任何内容)的单独的maven项目文件,则可以使用mvn idea:idea / eclipse:eclipse:eclipse来执行此操作,该文件设置为包含模块“.”和“..”的多模块项目。/otherproject“(这里只有单向引用,没有父引用)。如果你运行“mvn idea:idea / eclipse:eclipse -f workspace.xml”,你会得到一个工作区,所有这些模块链接在一起。没有 IDE 集成可以让您做到这一点。这听起来像是很多额外的工作,但工作区.xml文件真的很小。它不必包含所有依赖项内容,只需包含对要在 IDE 中绑定在一起的模块的引用。


答案 2

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

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

推荐