在maven生成战争中包含外部eclipse项目为jar

时间:2016-07-07 10:18:46

标签: java eclipse maven jar

我有一个日食项目,它引用了另一个项目 我已经在"属性" - >" Java构建路径"中包含了这个其他项目。和"属性" - >"部署组装"用于在eclipse工作空间中定义的服务器上进行部署 此配置包括WEB-INF / lib目录中的外部项目jar。

现在我想生成一个war文件,其中包含(右键单击)" Run As" - >" Maven install"命令。
我在pom中添加了maven-war-plugin插件:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <webappDirectory>${project.build.directory}/${project.artifactId}</webappDirectory>
        <warName>${project.artifactId}_${noVer}</warName>
        <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifest>
                <addClasspath>false</addClasspath>
            </manifest>
            <manifestEntries/>
            <manifestFile/>
        </archive>
    </configuration>
</plugin>

是否可以在战争中将另一个项目作为jar(自动)包含在内?

谢谢。

修改

&#34;其他项目&#34;是同一个工作区中的一个日食项目 实际上是一个maven jar项目 它如前所述包含在原始项目中 我想知道的是:
有没有办法(插件,指令......)将这个ECLIPSE项目直接包含在原始项目的pom中?

之类的东西
<dependency>
    <groupId>org.myproject</groupId>
    <artifactId>other_eclipse_project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

然后找到&#34; other_eclipse_project.jar&#34;在WEB-INF / lib

3 个答案:

答案 0 :(得分:1)

<> Ulrich的答案是正确的,但它只会将其他项目生成的jar添加到你的战争中。如果您的其他项目依赖于其他罐子,则不会包含它们。

我很想将其他项目更改为maven项目并将其所有依赖项添加到其pom中,这样您将获得所有传递依赖项。

答案 1 :(得分:0)

我建议你安装&#34;其他项目&#34;的jar文件。在您当地的maven存储库中。为此,请使用maven安装插件。有一些变种:

  1. 为&#34;其他项目创建pom.xml&#34;并致电mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>。在POM for&#34;其他项目&#34;中,指定其依赖项。
  2. 将maven坐标指定为参数:mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=jar
  3. 当您选择变体2时,您不能(AFAIK)指定&#34;其他项目&#34;的依赖项。

    当您完成此操作后,您可以将依赖项添加到&#34;其他项目&#34;在你的maven项目中。

    另见Install non-maven artifact in local repository

答案 2 :(得分:-1)

也许你的意思是eclipse能够直接从工作空间获取maven依赖。此功能称为“工作空间分辨率”。打开“MyApp”上下文菜单,在“Maven”中激活工作区分辨率。在eclipse Mars中,它默认是禁用的(AFAIK)。

enter image description here