gpt4 book ai didi

maven - Java Maven 项目作为目录而不是 jar 出现在另一个项目中

转载 作者:行者123 更新时间:2023-12-03 16:17:34 24 4
gpt4 key购买 nike

所以,我创建了一个 Spring Maven 项目,一个 Dao 项目,效果很好。所有代码都在正确的位置,所有单元测试都在运行,我可以进行 mvn 全新安装。可以看到在目标目录中有一个构建jar,里面的一切看起来都很好。我还可以确认,当我检查本地 .m2/repository 时,我刚刚构建的最新 jar 就在那里。

这是 pom.xml 的一小部分:

<modelVersion>4.0.0</modelVersion>
<groupId>com.tom.myproject</groupId>
<artifactId>myproject-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>My Project DAO</name>

现在,我正在为我的 UI 创建一个新的 Spring Maven Web 项目,这个 pom.xml 开始如下:
<modelVersion>4.0.0</modelVersion>
<version>0.0.1-SNAPSHOT</version>
<groupId>com.tom.myproject</groupId>
<artifactId>myproject-ws</artifactId>
<name>My Web Project</name>
<packaging>war</packaging>

同样在这个 pom.xml 文件中,我拥有的第一个依赖项之一是:
    <!-- My DAO ProjectDependencies -->
<dependency>
<groupId>com.tom.myproject</groupId>
<artifactId>myproject-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

我可以在 eclipse 中看到,当我尝试从这个 dao jar 访问类时,这似乎工作正常。当我在这里编译代码时,一切正常。当我执行“mvn clean install”来构建这场 war 时,我可以看到目标目录,所有需要的类和 jars 都进来了,显然 WEB-INF 中有 hibernate、logging 和 spring 类/lib 目录。

现在这是问题所在的部分......为什么 myproject-dao 在 WEB-INF/lib 下显示为 WEB-INF/lib/myproject-dao-0.0.1-SNAPSHOT.jar 但作为目录出现,而不是 jar ?

当然,当我拉入其他 jar 时,它们只是 .jar 文件而不是目录。

我应该补充一点,当您在 Maven 依赖项下查看 Eclipse 项目时,所有其他 jar 的图标将它们显示为文件。 myproject-dao.jar 的图标使用文件夹/目录的图标,因此很明显正在创建名为“myproject-dao.jar”的目录,而不是将内容压缩到 jar 文件中的文件。

当我构建 war 文件并部署 war 时,应用程序说它在 myproject-dao.jar 目录中找不到任何类。我必须从 WEB-INF/lib 目录中删除文件夹“myproject-dao.jar”并手动复制文件“myproject-dao.jar”。然后我可以清楚地看到表示这确实是一个文件的图标。

这可能是一个简单的修复,所以如果你能帮助我,那就太好了。

回答:

我没有使用 maven-assembly-plugin。但是,我确实发现了问题所在。

我的DAO项目和WEB项目都在同一个workspace,而且DAO项目是打开的,结果Eclipse中显示的maven依赖是文件夹图标,不是jar图标。当我关闭 DAO 项目并回顾 WEB 项目 pom.xml 文件上的 maven 依赖项时......现在它显示图标为 jar 而不是文件夹。

所以,我要做的就是用 maven 构建我的 dao.jar 文件,当它成功时,它就完成了。
然后我必须在 Eclipse 中关闭该项目。
在我的 web 项目 pom.xml 文件中,图标现在将其显示为一个 jar 文件,当它构建时,它将拉入 jars。

我想这是一个好处,如果一个人正在处理几个先前的项目,你真的有机会在 war 运行时查看 jar 文件中的内容。

就我而言,我知道我的 dao.jar 正在运行,所以我可以构建它,关闭项目,然后在我需要的任何地方使用该 jar。

最佳答案

我没有使用 maven-assembly-plugin。但是,我确实发现了问题所在。

我的DAO项目和WEB项目都在同一个workspace,而且DAO项目是打开的,结果Eclipse中显示的maven依赖是文件夹图标,不是jar图标。当我关闭 DAO 项目并回顾 WEB 项目 pom.xml 文件上的 maven 依赖项时......现在它显示图标为 jar 而不是文件夹。

所以,我要做的就是用 maven 构建我的 dao.jar 文件,当它成功时,它就完成了。
然后我必须在 Eclipse 中关闭该项目。
在我的 web 项目 pom.xml 文件中,图标现在将其显示为一个 jar 文件,当它构建时,它将拉入 jars。

我想这是一个好处,如果一个人正在处理几个先前的项目,你真的有机会在 war 运行时查看 jar 文件中的内容。

就我而言,我知道我的 dao.jar 正在运行,所以我可以构建它,关闭项目,然后在我需要的任何地方使用该 jar。

谢谢您的帮助!

关于maven - Java Maven 项目作为目录而不是 jar 出现在另一个项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com