Mor*_*oro 4 java maven-2 maven-plugin
我有一个Java项目X在项目Y上有依赖关系(在pom文件中).
我在Y中修改并使用Maven工具构建X,Y然后在没有问题的情况下运行X(在JBoss上).
当我在Y中添加新类然后使用Maven构建(没有问题),然后运行X时,它会抛出java.lang.NoClassDefFoundError新类.
我认为它是一个Maven依赖版本或类似的东西......我主要搜索谷歌,但没有任何影响......如何解决这个问题?
Moro,你在评论中写道,X声明了以下依赖:
<dependency>
<groupId>Y</groupId>
<artifactId>Y</artifactId>
<scope>provided</scope>
<version>1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
第一点.您在这里使用的是"固定"版本(而不是" SNAPSHOT").使用时SNAPSHOT,maven会在SNAPSHOT 每次构建时自动获取最新信息.另一方面,当你使用1.0时,一旦maven下载了这个工件,它就永远不会尝试获得新的1.0.所以,你应该增加Y的版本,或者,如果Y正在积极开发(增强,错误修复等),你应该真的使用SNAPSHOT.有关更多信息SNAPSHOT,请查看9.3.1.2章节.SNAPSHOT Sonatype的书的版本:
你为什么要用这个?SNAPSHOT版本用于正在开发的项目.如果您的项目依赖于正在进行开发的软件组件,则可以依赖于SNAPSHOT版本,并且Maven将在您运行构建时定期尝试从存储库下载最新的快照.同样,如果系统的下一个版本将具有版本"1.4",则在项目正式发布之前,您的项目将具有版本"1.4-SNAPSHOT".
第二点.您正在使用provided范围.根据第9.4.1章
.依赖范围:
provided当您希望JDK或容器提供它们时,将使用依赖项.例如,如果您正在开发Web应用程序,则需要编译类路径上可用的Servlet API来编译servlet,但您不希望在打包的WAR中包含Servlet API.Servlet API JAR由应用程序服务器或servlet容器提供.provided依赖关系在编译类路径(不是运行时)上可用.它们不是传递性的,也不是包装的.
这真的是你想要的吗?你是如何在JBoss上部署X和Y的?你不应该使用默认compile范围吗?
| 归档时间: |
|
| 查看次数: |
10724 次 |
| 最近记录: |