[英]How to include the resources directory, NOT the individual files, into the compile classpath?
[英]How to compile classpath resources on maven package?
我将一个项目作为依赖项包含在另一个项目中。 在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>
主网络服务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而不是文件夹?
包含的依赖项未编译为jar
Maven从不编译依赖项。 它只是按原样使用它们,或者将它们放在类路径中或将它们复制到WAR中。 但是它永远不会改变工件。
这也意味着依赖项必须在您的本地~/.m2/repository/
(在~/.m2/repository/
以下的某个位置),否则Maven将不满意(=失败并出现错误)。
注意:Maven的内存并不大。 它总是只能在他的小脑子里保留一个模块。 在Eclipse中,您可以按原样将另一个项目添加到构建路径,但是Maven不能这样做。 为了使Maven正常工作,必须在本地存储库中安装所有依赖项。
理念:
检查罐子是否存在于您的存储库中
检查Java Build Path中的war项目中是否未引用eclipse中的jar项目
不用eclipse mvn插件来做:
mvn eclipse:clean(对于两个项目)
mvn eclipse:eclipse(对于两个项目)
mvn全新安装(适用于两个项目)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.