【发布时间】:2014-05-05 05:07:09
【问题描述】:
我将一个项目作为依赖项包含在另一个项目中。在 maven package 上,包含的依赖项没有编译为 jar,而是创建了一个空文件夹。
项目:
main-test (packaging: jar)
main-webservice (packaging: war)
main-webservice 项目包含带有 pom 的 jar。
主测试 pom.xml:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>de.main</groupId>
<artifactId>test</artifactId>
<packaging>jar</packaging>
</project>
main-webservice pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.main</groupId>
<artifactId>ws</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>de.main</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build><plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins></build>
</project>
测试项目的依赖是在webservice项目内部解决的,所以pom似乎是正确的。
无论如何,如果我运行“mvn package”,main-webservices 的资源将编译到目标,但libs 文件夹包含另一个名为main-test-1.0.jar 的文件夹。但它是一个文件夹,而不是一个打包的 jar。
这里可能有什么问题?如何将项目打包为 jar,而不是文件夹?
【问题讨论】:
-
我以前从未见过这种情况。您可能需要发布更多的 pom,问题显然不在于您提供的小 sn-p。
-
见上面我的更新。我注意到:当我在我的 main-webservice 项目的 eclipse 中查看 maven 库视图时,依赖项
main-test也不是作为 jar 包含,而是作为文件夹包含。 -
在 Eclipse 中它是正常的,它的“工作区解析”就是这样做的。基本上它的 Eclipse 告诉您它的依赖项由工作区中的另一个项目管理。
-
"包含的依赖没有编译为 jar" -> Maven 从不编译依赖。它只是按原样获取它们,然后将它们放在类路径中或将它们复制到 WAR 中。但它从不更改工件。
标签: java eclipse maven jar pom.xml