java - 如何编译maven包上的classpath资源?

标签 java eclipse maven jar pom.xml

我将一个项目作为依赖项包含在另一个项目中。在 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,而不是文件夹?

最佳答案

included dependency is not compiled as jar

Maven 从不编译依赖项。它只是按原样获取它们,然后将它们放在类路径中或将它们复制到 WAR 中。但它永远不会改变 Artifact 。

这也意味着依赖项必须位于您的本地存储库中(~/.m2/repository/ 下面的某个位置),否则 Maven 将不高兴(= 因错误而失败)。

注意:Maven 没有大内存。他小小的大脑里永远只能保留一个模块。在 Eclipse 中,您可以将另一个项目添加到构建路径中,但 Maven 不能这样做。为了使 Maven 正常工作,您必须在本地存储库中安装所有依赖项。

关于java - 如何编译maven包上的classpath资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667063/

相关文章:

java - Play框架高延迟

java - 为 Android 创建 "closed"可共享项目

c++ - Eclipse Linux 库存 "Hello World"- 应用程序无法运行

linux - 如何删除 Jenkins Maven 本地存储库中的旧 Artifact

java - java读取带空格的字符串

java - 如何检查是否已在 Java 中创建/调用对象? ( eclipse 集成开发环境)

java - NetBeans jTable 不显示

java - 在 Eclipse 中启动程序与在终端中启动程序有何不同?

java - WebServiceTemplate对象初始化一次后为null

java - Maven 提示对 WAR 文件的依赖