【发布时间】:2010-12-10 06:39:44
【问题描述】:
如果在其他地方回答了这个问题,请拍打我并指出正确的方向。
我是 Maven 的新手,我正在努力思考如何在我的项目中使用它。我有两个顶级项目,一个是 Swing 应用程序,另一个是一组 Web 服务。它们都依赖于同一个内部 jar。为此设置 pom 的好方法是什么?
如果 jar 仅由其中一个项目使用,那么看起来我会将其向下移动并使其成为一个模块。但我不想要该 jar 源代码的两个(以及更多)副本。
看起来我可以做到这一点的一种方法是为 Swing 应用程序提供一个主 pom,其中包含 Swing 应用程序和库 jar 作为模块。然后以相同的方式为 Web 应用程序设置另一个主 pom。这有意义吗?有更好的方法吗?
目录结构目前非常简单:
Development/
----SwingApp/
----WebServices/
----CoreLibrary/
接下来有太多信息和附带问题:
我继承了一个“构建系统”(松散地使用术语),它是 100% Netbeans 自动生成的 ant 脚本。我开始尝试将其放入我非常喜欢的持续集成 TeamCity 中。我在尝试用它构建 WebServices 项目时遇到了严重的问题。据我所知,生成的 ant (build-impl.xml) 中有些东西不能在 CI 环境中被覆盖。将此与日常开发中的一些严重的类路径地狱结合起来,您就会开始明白我为什么要使用 maven。
包含在这个问题中的一个问题是我团队中的开发人员似乎都有一个习惯。现在,Netbeans 中的各种项目都有对“CoreLibrary”项目的项目引用。这意味着当“CoreLibrary”中的源发生更改并且开发人员在顶级应用程序上进行构建时,它还将根据需要构建 CoreLibrary。可以在Maven中模拟吗?这将有助于缓解过渡。到目前为止,我看到 Netbeans (6.7) 并没有在 maven 构建中做到这一点,而且我认为我不能出售(还)在 Netbeans 之外进行日常构建工作。
【问题讨论】:
-
有没有人幸运地这样做了:chasethedevil.blogspot.com/2007/04/…
../guide-ide-eclipse-site ../guide-ide -eclipse-core ../guide-ide-eclipse-module1 -
@jcullison 我已经阅读了您发布的链接的帖子和 cmets。显然,我不同意作者和 cmets。我从 2003 年开始使用 Maven,但我不知道人们在说什么。当然,使用 Maven 有一些学习曲线,但是一旦您知道如何使用它,Maven 真的 是一个不错的工具,我绝对不会浪费时间使用它。人们在帖子中提到的大多数事情都是由于缺乏知识恕我直言。
-
但是您是否曾经在模块中使用过相对 (../project2) 引用?你特别不同意那部分吗?
-
假设我在库模块中工作,并且我想使用 Swing 应用程序对其进行测试,如果我从 Swing 目录运行“mvn clean install”,则不会重新编译库模块。有没有办法在我构建当前项目时重新编译父项目中的所有依赖项?
-
答案在接受的答案(绿色复选标记)内,其中显示“mvn -am --projects webServices clean install”。但是,不要在 cmets 中发布问题,请开始您自己的问题。我花了一个月才注意到这一点。