我想通过systemPath从相对于我的项目目录结构的本地文件系统添加一个jar文件,而不是在远程存储库上。我添加了依赖声明,但maven不会对它做任何其他事情。
在下面的声明中,我希望将jar文件复制到我的目标web-inf/lib目录中,并将其作为war文件的一部分。目前,这种情况还没有发生。如何将jar文件复制到我的war文件?
这是debug maven模式的输出:
DEBUG] cglib:cglib-nodep:jar:2.2:test (setting scope to: compile)^M
DEBUG] Retrieving parent-POM: org.objenesis:objenesis-parent:pom:1.2 for project: null:objenesis:ja
DEBUG] org.objenesis:objenesis:jar:1.2:test (selected for test)^M
DEBUG] org.javap.web:testRunWrapper:jar:1.0.0:system (selected for system)^M
DEBUG] Plugin dependencies for:
...
<dependency>
<groupId>org.javap.web</groupId>
<artifactId>testRunWrapper</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/testRunWrapper.jar</systemPath>
</dependency>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>WebContent</directory>
</resource>
</webResources>
</configuration>
</plugin>发布于 2011-04-08 23:26:29
好的,我这样做了:注意底部的目录结构。使用下面的方法,来自相对项目路径的jar文件被视为一等公民,就像其他jar一样。下面的列表纠正了我最初的问题。使用下面的pom.xml清单,jar文件被复制到我的目标目录。
<repositories>
<repository>
<id>JBoss</id>
<name>JBoss Repository</name>
<layout>default</layout>
<url>http://repository.jboss.org/maven2</url>
</repository>
<repository>
<id>my-local-repo</id>
<url>file://${basedir}/lib/repo</url>
</repository>
</repositories>
<dependency>
<groupId>testRunWrapper</groupId>
<artifactId>testRunWrapper</artifactId>
<version>1.0.0</version>
</dependency>$ find repo
repo
repo/testRunWrapper
repo/testRunWrapper/testRunWrapper
repo/testRunWrapper/testRunWrapper/1.0.0
repo/testRunWrapper/testRunWrapper/1.0.0/testRunWrapper-1.0.0.jar发布于 2014-06-26 23:33:54
使用maven依赖插件可以完成以下工作:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
<includeScope>system</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>发布于 2011-04-09 01:21:28
不要使用系统。要做你想做的事情,只需声明为一个常规的(编译)依赖项,并使用mvn install:install-file到你的本地存储库中。其他一切都将按您所希望的那样工作(lib将被复制,等等)然而,这将意味着构建只能在您的机器上运行。
要为您的(内部)团队正确修复此问题,您需要设置一个存储库(例如Artifactory、Nexus或Archiva)。这几乎是团队使用Maven的必备条件。
如果这是公开的(例如开源)使用,你可以通过http服务器模拟一个存储库,也可以建立一个真正的存储库。
https://stackoverflow.com/questions/5597099
复制相似问题