Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 如何使用Maven编译基本项目并将其复制到多个项目中?_Eclipse_Maven_Ant_War_Maven Dependency Plugin - Fatal编程技术网

Eclipse 如何使用Maven编译基本项目并将其复制到多个项目中?

Eclipse 如何使用Maven编译基本项目并将其复制到多个项目中?,eclipse,maven,ant,war,maven-dependency-plugin,Eclipse,Maven,Ant,War,Maven Dependency Plugin,我有一个基本项目,它是我所有常用项目的主要依赖项。所有项目都与Maven一起工作。我正在使用Eclipse。现在,基础项目有一个war和一个jar执行。我在我的公共项目中使用jar作为系统依赖项,如下所示: <dependency> <groupId>my.group</groupId> <artifactId>base</artifactId> <version>1.

我有一个基本项目,它是我所有常用项目的主要依赖项。所有项目都与Maven一起工作。我正在使用Eclipse。现在,基础项目有一个war和一个jar执行。我在我的公共项目中使用jar作为系统依赖项,如下所示:

    <dependency>
        <groupId>my.group</groupId>
        <artifactId>base</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/myapproot/WEB-INF/lib/base.jar</systemPath>
    </dependency>

我的团队
基础
1
系统
${basedir}/myapproot/WEB-INF/lib/base.jar
如果我对基础进行了一些更改,我需要3个步骤:

  • 建基地
  • 复制jar文件
  • 之后构建公共项目
  • 一定有更好的解决办法


    可以使用maven或ant文件同时执行所有三个步骤吗?

    您的公共项目取决于基础项目的工件,其作用域为
    system
    ,并使用
    systemPath

    具有
    system
    范围的依赖项不会从Maven存储库中解析,因此您的公共项目将始终在这里
    ${basedir}/myapproot/WEB-INF/lib/base.jar
    查找
    my.group:base

    这解释了为什么必须手动复制基本项目的工件

    如果你删除

    <scope>system</scope>
    <systemPath>${basedir}/myapproot/WEB-INF/lib/base.jar</systemPath>
    
    系统
    ${basedir}/myapproot/WEB-INF/lib/base.jar
    
    。。。然后,您的公共项目将从Maven存储库中解析
    my.group:base
    。然后,在基本项目上运行
    mvn install
    my.group:base
    安装到您的Maven repo中,您的公共项目将从那里解决它


    您仍然需要同时构建基本构件和公共构件(这是有意义的;您更改了某些构件,而构建是使这些构件显化的方式),但您不必手动复制基本构件。

    这是我的第一次尝试,但由于目前无法重述的原因,我使用了系统依赖项。有没有办法强制编译基依赖项?或者Eclipse中的一个在编辑后自动调用maven的选项?如果您已经用maven构建了它,您是否通过系统范围依赖关系使用它?能否显示my.group Artfact的pom文件?如果您在my.group:base项目上执行了
    mvn安装
    ,则不需要具有系统范围依赖关系。除此之外,您在WEB-INF/lib目录中使用的是什么?我认为hole pom在这里并不是很有趣,它需要一个注释;)我将war文件用于观察和测试平台,我忽略了jar中一些普通项目不需要的类。如果忽略了一些类,则生成的jar完全是错误的,这意味着您应该将其打包为不同的(或者最好单独制作一个模块)。。如果没有pom,很难猜出哪里出了问题。。。