gpt4 book ai didi

java - 如何强制 IntelliJ 中的 Maven 从本地 .m2 存储库中提取特定依赖项

转载 作者:行者123 更新时间:2023-11-30 02:39:39 26 4
gpt4 key购买 nike

简介

在我继承的一个特定项目中,我们有一个依赖项 jar文件是 simple-capcha 的自定义包装器/servlet 。他们告诉我对小型包装验证码项目进行具体更改,并生成 JAR - 然后在主项目中测试它。

然后我必须让第二个主项目使用新的 JAR作为依赖项(而不是位于公司 Artifact 上的文件)。

当前进程

下面我描述了我正在使用的流程,我认为效率非常低。我使用maven生成jar来自小项目的文件。然后,我转到本地 .m2 存储库,并用新的 JAR 替换那里存在的 JAR(从 Artifactory 下载)。

<dependency>
<groupId>test.company.something.captcha</groupId>
<artifactId>captcha-common</artifactId>
<version>0.90</version>
<!-- <scope>system</scope>
<systemPath>C:/Users/mbakopoulos/Dropbox/_captcha/target/captcha-common-0.90.jar</systemPath>-->
</dependency>

最后,我取消注释,并注释 <scope><systemPath>标签(启用自动导入)以便intellij检测到这2个更改,并强制maven从本地.m2拉取存储库替换 maven:library在项目中。

最后,特定的 JAR 包含 HTTPServlet实际上正在 web.xml 中使用的主要项目。在某些时候,当我更改依赖项版本时,我得到了 classNotFoundException之后JBOSS部署了war :

<servlet>
<servlet-name>TheCaptcha</servlet-name>
<servlet-class><servlet>
<servlet-name>StickyCaptcha</servlet-name>
<servlet-class>test.company.something.CaptchaServerServlet</servlet-class>
<init-param>
<param-name>width</param-name>
<param-value>250</param-value>
</init-param>
<init-param>
<param-name>height</param-name>
<param-value>60</param-value>
</init-param>
</servlet>

问题

开发和测试通常作为依赖项包含的依赖项的最佳方法是什么?我可以删除 pom.xml 条目,并将其他项目作为模块包含吗?

我正在使用 intelliJ IDEA 2016。

最后,是否可以同时连接到两个模块/项目?我怀疑应该有。

最佳答案

将我的评论移至此处的扩展答案。

首先,任何发布的 Maven Artifact 拥有相同版本号的多个不同版本会带来很多问题!如果可能的话,请避免这样做。编号系统始终可以扩展(例如 0.90.10.90-CUSTOM-10.09-A )。

其次,使用systemPath因为依赖关系是非标准的。尝试“正常”使用版本,以便它们位于您的 M2_HOME\.m2\repository 中在本地工作时(并且可以上传到您的 Artifact 或连接以与同事共享)。

现在,就自动化构建/测试过程而言,您有几个选择。您可以构建 0.90.10.90.2并更新 <dependency> 的版本每次重建依赖项时都会部分。

或者您可以使用快照版本控制。 0.90.1-SNAPSHOT向 Maven 表明这是一个快照构建。每当您使用快照依赖项重建项目时,它都会查看该依赖项是否已更改。

最后,您可以将依赖项作为子模块移动到与主项目相同的项目中。这样您就可以避免在项目之间定义显式依赖关系。

希望这有帮助...

关于java - 如何强制 IntelliJ 中的 Maven 从本地 .m2 存储库中提取特定依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42111849/

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