如何在使用maven构建的war中包含系统依赖关系

我在互联网上搜索了相当长的一段时间,我无法弄清楚如何配置maven-war插件或类似的东西,以便系统依赖包含在内建的war(WEB-INF / lib文件夹)

在构建jar的情况下,我使用maven依赖项插件:

<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

但我无法理解在战争构建的情况下要做什么。 我试过使用maven-war插件,但它不包含构建中的系统依赖关系。

[UPDATE]

我有类型的依赖:

<dependency>
    <groupId>LoginRadius</groupId>
    <artifactId>LoginRadius</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}libLoginRadius-1.0.jar</systemPath>
</dependency>

在我的POM中,并且这些依赖关系在构建战争时不包含在WEB-INF / lib中。


让我试着总结一下我尝试过的选项:

<packagingIncludes>${java.home}/lib/jfxrt.jar</packagingIncludes>

这不行! 此外,只有罐子名称,排除其他所有内容,所以如果你愿意尝试然后尝试

<packagingIncludes>${java.home}/lib/jfxrt.jar,**/*</packagingIncludes>

Jatin的回答看起来有点复杂,我试着再次通过POM来弄清楚WEB-INF POM中提到的系统罐子到底在哪里。

无论如何,我最终使用了这个解决方案,它一开始并没有工作,但经过一段时间,一些修正奏效:

使用以下命令installed the jar in my local repository中:

mvn install:install-file -Dfile="C:UsershpDocumentsNetBeansProjectsTwitterAndLoginRadiusMavenlibLoginRadius-1.0.jar" -DgroupId=LoginRadius -DartifactId=LoginRadius -Dversion=1.0 -Dpackaging=jar

运行上述命令后,我将POM中的依赖项更改为

<dependency>
            <groupId>LoginRadius</groupId>
            <artifactId>LoginRadius</artifactId>
            <!--<scope>system</scope>-->
            <version>1.0</version>
            <!--<systemPath>${basedir}libLoginRadius-1.0.jar</systemPath>-->
        </dependency>

注 - 请参阅我已评论的系统范围和systemPath。

现在构建战争,在WEB-INF / lib中包含这个LoginRadius-1.0.jar


如果你的意思是jar依赖,那么下面是一个示例pom.xml,它是需要的文件并生成一个war文件:

 <build>
        <defaultGoal>install</defaultGoal>
        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
        <outputDirectory>${project.basedir}/target/classes</outputDirectory>
        <testOutputDirectory>${project.basedir}/target/test-classes</testOutputDirectory>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
            </testResource>
        </testResources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                        <debug>true</debug>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <includeEmptyDirs>true</includeEmptyDirs>
                        <webResources>
                            <resource>
                                <directory>ui</directory>
                                <targetPath></targetPath>
                                <includes>
                                    <include>**</include>
                                </includes>
                            </resource>
                            <resource>
                                <directory>lib</directory>
                                <targetPath>WEB-INF</targetPath>
                                <includes>
                                    <include>**/*.xml</include>
                                    <include>**/log4j.properties</include>
                                </includes>
                            </resource>
//edited below
                            <resource>
                               <directory>lib</directory>
                               <targetPath>WEB_INF/lib</targetPath>
                               <includes>
                                    <include>**/*.jar</include>
                               </includes>
                            </resource>
                        </webResources>
                        <webXml>${project.basedir}/WEB-INF/web.xml</webXml>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果碰巧你不能将第三方库安装到你的本地仓库,由于第三方的一些愚蠢的命名/包装检查,你仍然可以在构建时将你的system范围依赖项添加到你的最终包(至少如果你正在构建一个webapp)使用maven-war-plugin ,你需要创建一个这样的配置。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <failOnMissingWebXml>true</failOnMissingWebXml>
        <webResources>
            <resource>
               <directory>path/to/lib/in/project</directory>
               <targetPath>WEB-INF/lib</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

不确定,但我相信该库必须位于项目基本目录的本地。 我倾向于在src/main/ called lib下创建一个目录来存放这些第三方库。 在构建过程中,它们被放置在正确的目录中并添加到war文件中。

链接地址: http://www.djcxy.com/p/29653.html

上一篇: How to include system dependencies in war built using maven

下一篇: getting the latest release version of a dependency