首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在使用maven构建的war中包含系统依赖项

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

Stack Overflow用户
提问于 2013-09-28 18:00:11
回答 5查看 62.6K关注 0票数 42

我已经在互联网上搜索了很长一段时间,我不知道如何配置maven-war插件或类似的东西,以便将系统依赖项包含在built war (WEB-INF/lib文件夹)中

我在jar-build的情况下使用maven依赖插件:

代码语言:javascript
复制
<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插件,但它没有在构建中包含系统依赖项。

更新

我有以下类型的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>LoginRadius</groupId>
    <artifactId>LoginRadius</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}\lib\LoginRadius-1.0.jar</systemPath>
</dependency>

在构建war时,WEB-INF/lib中没有包含这些依赖项。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-28 20:13:38

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

代码语言:javascript
复制
<packagingIncludes>${java.home}/lib/jfxrt.jar</packagingIncludes>

这不管用!此外,只有jar名称会排除其他所有内容,所以如果您愿意尝试,请尝试

代码语言:javascript
复制
<packagingIncludes>${java.home}/lib/jfxrt.jar,**/*</packagingIncludes>

Jatin的回答看起来有点复杂,我再次尝试查看POM &再次尝试弄清楚所提到的系统jars包含在WEB-INF POM中的确切位置。

无论如何,我最终使用了这个解决方案,它一开始不起作用,但经过一段时间和一些修正后起作用了:

我使用以下命令在本地存储库中安装了jar:

代码语言:javascript
复制
mvn install:install-file -Dfile="C:\Users\hp\Documents\NetBeansProjects\TwitterAndLoginRadiusMaven\lib\LoginRadius-1.0.jar" -DgroupId=LoginRadius -DartifactId=LoginRadius -Dversion=1.0 -Dpackaging=jar`

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

代码语言:javascript
复制
<dependency>
   <groupId>LoginRadius</groupId>
   <artifactId>LoginRadius</artifactId>
   <!--<scope>system</scope>-->
   <version>1.0</version>
   <!--<systemPath>${basedir}\lib\LoginRadius-1.0.jar</systemPath>-->
</dependency>

注意-请看我已经注释了系统作用域& systemPath。

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

票数 22
EN

Stack Overflow用户

发布于 2018-02-13 16:55:36

如果由于第三方的一些愚蠢的命名/打包检查而碰巧无法将第三方库安装到本地存储库,您仍然可以在构建时使用maven-war-pluginsystem范围的依赖项添加到最终的包中(至少如果您正在构建need应用程序),其中您需要创建这样的配置。

代码语言:javascript
复制
<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/下创建一个名为lib的目录来保存这些第三方库。在构建过程中,它们被放置在正确的目录中,并添加到war文件中。

票数 16
EN

Stack Overflow用户

发布于 2013-09-28 18:08:56

如果您的意思是作为jar依赖项,那么下面是一个示例pom.xml,它获取所需的文件并生成war文件:

代码语言:javascript
复制
 <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>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19065666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档