将JAR-File添加到web-inf / lib文件夹,而不将其包含在pom.xml中

时间:2014-03-27 10:29:32

标签: java maven jar

我正在使用JBoss编写应用程序服务器。该应用程序由Maven编译并打包为WAR。现在我想要外化一些类。我创建了另一个maven项目,打包为JAR。

我相信JAR有正确的目录树。它包含一个META-INF目录和包结构作为目录,类文件驻留在该目录中。

我在网上看到我可以将这个JAR添加到应用服务器中,将其放入src\main\webapp\WEB-INF\lib,而无需在appserver的pom.xml中进一步提及它(在某些时候这些JAR应该是插件,所以在pom.xml中添加依赖项不是一个选项。

当我编译服务器时,JAR会被正确地复制到WEB-INF\lib下的WAR中,以及其他外部依赖项。

但是,当我尝试在appserver中使用该类时,(写一个这样的类的import语句就足够了),maven会抱怨它无法找到该类。

我试图在网上找到信息,但我能找到的只是这就是它要完成的方式。

有谁知道我可以在哪里寻找线索出了什么问题?

2 个答案:

答案 0 :(得分:3)

将jar文件放入src\main\webapp\WEB-INF\lib是很麻烦的,而且显然是错误的。

代码无法编译的原因是maven编译器插件使用定义的源路径和(提供的和编译范围的)依赖项。

你可以改变这一点,但结果很难理解。此外,您必须手动更新您的jar文件(BTW在您的源代码中没有位置)。

这就是依赖管理的目的。

不要反对你的工具。如果您的项目需要来自此jar的类,那么它是一个依赖项。所以宣布它是这样的。

答案 1 :(得分:1)

如果您正在谈论“插件”,那么您不应该直接在代码中导入类。一种常见的方法是定义另一个模块,其中包含插件将实现的接口,然后让您的主webapp和插件项目都依赖于此接口模块。在主应用程序中,您通过反射加载插件类并将它们转换为适当的接口。这样,在编译宿主应用程序时,您不会直接依赖插件的具体类。