5

我正在使用 Intellij-IDEA 11。如果有适用于 12 的解决方案,我愿意为此进行升级。

我构建了一个很多项目都依赖的库,但库经常更改。该库作为正常依赖项添加到我的项目的 pom.xml 中:

    <dependency>
        <groupId>my.company</groupId>
        <artifactId>MyLibrary</artifactId>
    </dependency>

这是我在项目中添加功能时需要采取的一系列典型步骤:

  1. 修改我项目中的一些代码
  2. 修改我所依赖的库中的一些代码
  3. 检查该功能是否有效
  4. 如果没有,请重复

在我的 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

4

4 回答 4

2

我找到了一种方法来做到这一点。首先,在 Maven 项目工具窗口中添加库的 pom.xml。然后您编辑您的配置,以便它们运行您的库的安装目标。下面提供了如何执行此操作的图像。

单击此处获取完整大小的链接 如何在运行之前安装库

于 2013-01-03T20:55:26.083 回答
1

打开模块设置(模块上的 F4),转到模块,选择模块中依赖于您的库的依赖项选项卡。

如果库是模块添加模块依赖如果库不是模块,我假设它被构建并放在某个地方,将该目录添加到模块依赖项。

列表越高,其优先级越高

于 2013-01-02T23:02:25.707 回答
0

我有类似的架构,这就是我所做的(而且效果很好)。

  1. 基于我的主项目的pom.xml创建一个IDEA maven项目(项目使用频繁变化的库)。
  2. 将maven项目添加到我的主项目中(点击maven项目选项卡中的“+”图标并选择我经常更改的库的pom.xml)

编辑

注意:所有模块(来自库和主项目)都有一个 *-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 在当前的“工作区”。

希望它澄清情况。

如果我需要运行某些东西,我也有不同的选择

  1. 在 IDEA 中定义一个新的maven 运行配置,以使用任何配置文件运行任何 maven 目标(来自我的 IDEA 项目中的任何 pom.xml)。
  2. 在 IDEA 中定义一个简单的单元测试配置(除了 classpath 是从 pom.xml 中定义的 classpath 派生出来的,不直接与 maven 链接)
  3. 在 IDEA 中定义一个新的Tomcat/JBoss 配置并在其中部署一些工件。(IDEA 从 pom.xml 中检测可部署的工件,例如 war 或 ejb)
于 2013-01-03T11:45:54.540 回答
0

我的情况和你一样,我使用的是 Intellij 2016.02。

这是我解决它的方法:

1 - 在 Intellij 上打开 maven 面板,转到 View -> Tool Windows -> Maven Projects,然后单击加号绿色按钮(添加 maven 项目)并从依赖项项目中选择 pom.xml 文件

2 - 在运行/调试配置设置中,添加一个启动前任务作为 Maven 目标,选择依赖项目的工作目录,然后在命令行中键入“安装”。

3 - 现在编辑您的依赖项目中的任何内容,并重新部署您的主应用程序,更改可能会影响。

编辑:

我找到了一个新的解决方案,它解决了“更新类和资源”的缺点,这就是我所做的:

1 - 执行上一个解决方案的第一步,但如果您在步骤 2 中添加安装目标,请从启动前任务中删除它。

2 - 编辑分解的工件,并将“可用元素”面板中的依赖项目“编译输出”元素添加到输出左侧面板。

更改可能无需安装即可工作,现在我的“更新类和资源”就像一个魅力:)

于 2016-08-15T05:51:11.357 回答