我已经在互联网上搜索了很长一段时间,我不知道如何配置maven-war插件或类似的东西,以便将系统依赖项包含在built war (WEB-INF/lib文件夹)中
我在jar-build的情况下使用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插件,但它没有在构建中包含系统依赖项。
更新
我有以下类型的依赖:
<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中没有包含这些依赖项。
发布于 2013-09-28 20:13:38
让我试着总结一下我尝试过的选项:
<packagingIncludes>${java.home}/lib/jfxrt.jar</packagingIncludes>
这不管用!此外,只有jar名称会排除其他所有内容,所以如果您愿意尝试,请尝试
<packagingIncludes>${java.home}/lib/jfxrt.jar,**/*</packagingIncludes>
Jatin的回答看起来有点复杂,我再次尝试查看POM &再次尝试弄清楚所提到的系统jars包含在WEB-INF POM中的确切位置。
无论如何,我最终使用了这个解决方案,它一开始不起作用,但经过一段时间和一些修正后起作用了:
我使用以下命令在本地存储库中安装了jar:
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中的依赖项更改为
<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
发布于 2018-02-13 16:55:36
如果由于第三方的一些愚蠢的命名/打包检查而碰巧无法将第三方库安装到本地存储库,您仍然可以在构建时使用maven-war-plugin
将system
范围的依赖项添加到最终的包中(至少如果您正在构建need应用程序),其中您需要创建这样的配置。
<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文件中。
发布于 2013-09-28 18:08:56
如果您的意思是作为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>
https://stackoverflow.com/questions/19065666
复制相似问题