繁体   English   中英

如何在Maven包上编译类路径资源?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM