给定一个包含不同RDBMS的JAR连接器的文件夹'database'。每个JAR都位于自己的文件夹中:
+---database
+---db2
+---db2.jar
+---derby
+---derby.jar
+---h2
+---h2.jar
+---mysql
+---mysql.jar
我需要将所有这些JAR文件复制到WEB-INF \ lib。
这是我的pom.xml:
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webResources>
<resource>
<directory>../target/${project.artifactId}/classes/database</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
问题是,那些JAR是用它们的目录复制的:
+---WEB-INF/lib
+---db2
+---db2.jar
+---derby
+---derby.jar
+---h2
+---h2.jar
+---mysql
+---mysql.jar
应该是这样的:
+---WEB-INF/lib
+---db2.jar
+---derby.jar
+---h2.jar
+---mysql.jar
我有20个连接器,我不想硬编码。
答案 0 :(得分:2)
你遇到了问题,因为你试图将maven变成一些不应该做的东西。二进制工件应该部署到工件存储库(或本地maven存储库)中,而不包含在项目中。这样将它们定义为pom中的依赖项将确保它们被复制到WEB-INF / lib中。
答案 1 :(得分:1)
最正确的方法是将jar文件安装到Maven存储库中,然后使用maven-dependency-plugin:copy
目标。或者如果你想粗略地解决这个问题,那么使用maven-antrun-plugin
(复制规则)。