Jim*_*Jim 3 java maven-2 build
如果在其他地方回答这个问题,请指责我并指出正确的方向.
我是Maven的新手,并试图将我的头脑与我的项目一起使用.我有两个顶级项目,一个是Swing应用程序,另一个是一组Web服务.它们都依赖于同一个内部罐子.有什么好方法可以为此设置poms?
如果jar只被其中一个项目使用,那么看起来我会把它移到里面并使它成为一个模块.但是我不想要那个jar的源代码的两个(以及更多)副本.
看起来我可以这样做的一种方法是为Swing应用程序提供一个主pom,其中包含Swing应用程序和库jar作为模块.然后为Web应用程序设置另一个主pom以相同的方式设置.那会有意义吗?还有更好的方法吗?
目录结构目前非常简单:
Development/
----SwingApp/
----WebServices/
----CoreLibrary/
Run Code Online (Sandbox Code Playgroud)
方式太多信息和附带问题如下:
我继承了一个"构建系统"(使用松散术语),它是100%Netbeans自动生成的ant脚本.我开始尝试将它放入持续集成,TeamCity,我非常喜欢.我试图用它来构建WebServices项目时遇到了严重的问题.在我所知的情况下,生成的ant(build-impl.xml)中的某些内容无法在CI环境中被覆盖.在日常开发中将这与一些严重的类路径地狱相结合,你就会开始明白我为什么要去找maven.
这个问题包含的一个问题是我的团队中的开发人员似乎都习惯了.现在,Netbeans中的各个项目都有对"CoreLibrary"项目的项目引用.这意味着当在"CoreLibrary"中更改源代码并且开发人员在顶级应用程序上进行构建时,它还将根据需要构建CoreLibrary.可以在Maven中模拟吗?这将有助于缓解过渡.到目前为止,我看到Netbeans(6.7)没有使用maven版本,我认为我不能卖掉(还)在Netbeans之外进行日常构建工作.
在您的开发目录中,您将拥有一个类似于以下内容的pom:
<project>
<groupId>yourGroup</groupId>
<artifactId>project</artifactId>
<packaging>pom</packaging>
<modules>
<module>coreLibrary</module>
<module>swingApp</module>
<module>webServices</module>
</modules>
</project>
Run Code Online (Sandbox Code Playgroud)
是的,我已经遗漏了其他一些元素,所以填写你需要的任何其他元素.
然后,您的coreLibrary,swingApp和webServices模块将各自具有一个带有父元素的pom,以及任何依赖项,如下所示
<project>
<parent>
<groupId>yourGroup</groupId>
<artifactId>project</artifactId>
<version>yourVersion</version>
</parent>
<artifactId>webServices</artifactId>
<packaging>war</packaging>
<version>yourVersion</version>
<dependencies>
<dependency>
<groupId>yourGroup</groupId>
<artifactId>coreLibrary</artifactId>
<version>yourVersion</version>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
如果你在根级别构建,那么它将构建所有3个模块,或者更好的是,你可以使用--also-make选项来仅构建webServices及其依赖项(在本例中为coreLibrary)
mvn -am --projects webServices clean install
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6685 次 |
| 最近记录: |