加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何为依赖于同一jar的两个独立项目设置maven

发布时间:2020-12-15 04:51:23 所属栏目:Java 来源:网络整理
导读:如果在其他地方回答这个问题,请指责我并指出正确的方向. 我是Maven的新手,并试图将我的头脑与我的项目一起使用.我有两个顶级项目,一个是Swing应用程序,另一个是一组Web服务.它们都依赖于同一个内部罐子.有什么好方法可以为此设置poms? 如果jar只被其中一个
如果在其他地方回答这个问题,请指责我并指出正确的方向.

我是Maven的新手,并试图将我的头脑与我的项目一起使用.我有两个顶级项目,一个是Swing应用程序,另一个是一组Web服务.它们都依赖于同一个内部罐子.有什么好方法可以为此设置poms?

如果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之外进行日常构建工作.

解决方法

在您的开发目录中,您将拥有一个类似于以下内容的pom:

<project>
    <groupId>yourGroup</groupId>
    <artifactId>project</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>coreLibrary</module>
        <module>swingApp</module>
        <module>webServices</module>
    </modules>
</project>

是的,我已经遗漏了其他一些元素,所以填写你需要的任何其他元素.

然后,您的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>

如果你在根级别构建,那么它将构建所有3个模块,或者更好的是,你可以使用–also-make选项来仅构建webServices及其依赖项(在本例中为coreLibrary)

mvn -am --projects webServices clean install

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读