Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制IntelliJ中的Maven从本地.m2存储库中提取特定依赖项 介绍_Java_Maven_Intellij Idea_Jar_Lib - Fatal编程技术网

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

Java 如何强制IntelliJ中的Maven从本地.m2存储库中提取特定依赖项 介绍,java,maven,intellij-idea,jar,lib,Java,Maven,Intellij Idea,Jar,Lib,在我继承的一个特定项目中,我们有一个依赖项作为jar文件,它是simple capcha的自定义包装器/servlet。 他们告诉我对小包装capcha项目进行特定的更改,并生成JAR——然后在主项目中测试它 然后我必须让第二个主项目使用新的JAR作为依赖项(而不是位于公司工件上的文件) 当前进程 下面我将描述我所使用的流程,我觉得它效率很低。 我使用maven从这个小项目生成jar文件。 然后,我转到本地的.m2存储库,用新的JAR替换那里存在的JAR(从artifactory下载) <

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

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

当前进程 下面我将描述我所使用的流程,我觉得它效率很低。 我使用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>
问题: 开发和测试通常作为依赖项包含的依赖项的最佳方法是什么?我是否可以去掉pom.xml条目,并将另一个项目作为一个模块包括在内

我正在使用intelliJ IDEA 2016

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

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

首先,拥有多个不同版本的maven工件和相同的版本号会带来很多问题!!如果可能的话,避免这样做。编号系统始终可以扩展(例如
0.90.1
0.90-CUSTOM-1
0.09-A

其次,对依赖项使用
systemPath
是非标准的。尝试“正常”使用版本,以便在本地工作时,它们位于您的
M2_HOME\.M2\存储库中(可以上传到您的artifactory或nexus与同事共享)

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

也可以使用快照版本控制
0.90.1-SNAPSHOT
向maven指出这是一个快照构建。每当您重建具有快照依赖项的项目时,它都会查看该依赖项是否已更改

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


希望这能有所帮助……

有什么原因你不只是制作了一个新版本
0.90-a
或类似的版本吗?@vikingsteve我最初是这样尝试的,并使用
scope
systemPath
包含了依赖项,但在调试主项目时,我得到了一个
classNotFoundException
。所以我放弃了,使用了相同的版本/文件名。你可以完全删除
scope
systemPath
并将工件与新版本(
0.90-a
或其他任何版本)放在
C:/Users/mbakopoulos/.m2/repository/test/company/something/captcha/captcha common
中吗。只要这是默认的本地存储库,您的构建就可以找到它。删除所有
lastUpdated
引用。@vikingsteve我可以看到如何避免过度使用以前的JAR版本-更干净/更有条理。每次将更新的
.jar
文件放入
m2
存储库时,我是否仍需要编辑
pom.xml
依赖关系?是否可以同时连接到两个模块/项目?
<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>