我正在使用Intellij-IDEA 11.如果有一个解决方案在12中运行,我愿意为此升级。
我构建了一个许多项目依赖的库,但库经常更改。该库作为普通依赖项添加到项目的pom.xml中:
<dependency>
<groupId>my.company</groupId>
<artifactId>MyLibrary</artifactId>
</dependency>
这是我向项目添加功能时需要采取的一系列典型步骤:
在我的IDE之外(恰好是Intellij-IDEA),这是一个简单的过程:我添加步骤2.5,即cd进入依赖项的项目文件夹,然后mvn install
库。
但我不知道在Intellij-IDEA中这样做的便捷方法。理想情况下,我会在Intellij中修改库的源代码,单击绿色播放按钮,IDE会想出使用修改后的库源。
现在,由于库是一个依赖项,它只使用我本地存储库中的内容。因此,在我手动mvn install
之前,修改库的源代码没有影响。
注意:我发现了一个似乎有效的技巧。如果我修改项目的父pom以将库包含为maven模块,然后包含与intellij模块相同的库,它将使用该源而不是本地repo中的jar。但是我不喜欢这个解决方案,因为我永远不想提交修改后的pom(因为模块必须指向仅存在于我的本地文件系统中的文件系统路径)。
我在Intellij-IDEA错误跟踪器中发现了一个似乎与此相关的错误:http://youtrack.jetbrains.com/issue/IDEA-25146
答案 0 :(得分:2)
我找到了一种方法来做到这一点。首先,在Maven Projects工具窗口中添加库的pom.xml。然后编辑配置,以便它们运行库的安装目标。以下提供了如何执行此操作的图像。
答案 1 :(得分:1)
打开模块设置(模块上的F4),转到模块,在模块中选择依赖于库的依赖项选项卡。
如果库是模块,则添加模块依赖项 如果库不是模块,我假设它被构建并放在某处,将该目录添加到模块依赖项中。
列表越高,其优先级越高
答案 2 :(得分:0)
我有类似的架构,这就是我的工作(而且效果很好)。
修改强>
注意:所有模块(来自库和主项目)都有* -SNAPSHOT版本
更详细地说,我的库项目的pom.xml:
<groupId>com.company</groupId>
<artifactId>mylibrary</artifactId>
<version>2.0.1-SNAPSHOT</version>
我主项目的pom.xml
<groupId>com.company</groupId>
<artifactId>myproject</artifactId>
<version>1.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>mylibrary</artifactId>
<version>2.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
我认为IDEA很聪明,可以看到依赖是SNAPSHOT,而且这个库在当前的IDEA项目中(即同一个IDEA窗口)......所以IDEA不会查看本地回购,因为SNAPSHOT位于当前的“工作区”中。
希望澄清情况。
如果我需要运行某些东西,我有不同的选择
答案 3 :(得分:0)
我的情况与您相同,我使用的是Intellij 2016.02。
以下是我解决它的方法:
1 - 在Intellij上打开maven面板进入View - &gt;工具Windows - &gt; Maven Projects,然后单击加号绿色按钮(添加maven项目)并从依赖项目中选择pom.xml文件
2 - 在运行/调试配置设置中,将启动前任务添加为maven目标,选择依赖项目的工作目录,然后在命令行中输入“install”。
3 - 现在编辑依赖项目中的任何内容,然后重新部署主应用程序,这些更改可能会受到影响。
已编辑:
我找到了一个新的解决方案,它解决了“更新类和资源”的缺点,这就是我所做的:
1 - 执行上一个解决方案的第一步,但如果在步骤2中添加安装目标,请从启动任务之前删除安装目标。
2 - 编辑爆炸的工件,并将依赖项目“编译输出”元素从“可用元素”面板添加到输出左侧面板。
更改可能无需安装即可使用,现在我的“更新类和资源”就像魅力一样:)