【发布时间】:2018-10-02 16:29:13
【问题描述】:
因此,作为 Devops 迁移的一部分,我被分配了一项任务,将我们的应用程序从 Ant 转换为 Maven。我已经处理了依赖关系,除了一些不存在于 nexus 存储库中的依赖关系。我将这些依赖项保存在路径下的项目 web 文件夹(转换为 .war 文件)下的某个位置(抱歉,由于法律问题,我无法共享项目的正式名称和代码,因此共享类似的项目结构和代码)
applicationName -> WebContent -> WEB-INF -> lib
这是项目的文件夹结构:
ApplicationName(.jar)
ApplicationName-ear(.ear)
ApplicationName-build
ApplicationName-web(.war)
示例结构:
现在在 ApplicationName-web 项目的 pom.xml 下,我输入了以下 sn-p 以从 lib 文件夹中读取 jar:
<plugin>
<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<goals>
<goal>add-jars</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${basedir}/WebContent/WEB-INF/lib</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
但是当我在 run-as 下使用 maven-install 时,它仍然没有从该位置读取 jar 并给出类似“包 {包名} 不存在”的错误。我也在 ApplicationName(.jar) 项目中引用了这个 jar,我希望一旦通过上述插件添加它,它会自动读取 jar。
我希望我的问题是有道理的,我尽力解释它,再次抱歉没有提供实际的代码 sn-p 和 pom。
TL;DR : 如何通过 maven 将项目的 lib 文件夹中存在的 .jar 文件添加为依赖项。
【问题讨论】:
-
如果你正在构建一个 EAR,你必须使 EAR 依赖于 war 模块并使用 maven-ear-plugin(包装:ear),它会自动将它们组合到最终的 EAR 中,而无需使用奇怪的插件addjars-maven-plugin 这是错误的方式...以这里为例:github.com/khmarbaise/javaee