使用maven和Intellij IDEA,如何修改依赖项而无需每次都手动安装它?

时间:2013-01-02 22:56:41

标签: maven intellij-idea

我正在使用Intellij-IDEA 11.如果有一个解决方案在12中运行,我愿意为此升级。

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

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

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

  1. 修改项目中的一些代码
  2. 修改我依赖的库中的一些代码
  3. 检查功能是否有效
  4. 如果没有,请重复
  5. 在我的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 个答案:

答案 0 :(得分:2)

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

Click here for a full sized link How to mvn install a library before you run

答案 1 :(得分:1)

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

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

列表越高,其优先级越高

答案 2 :(得分:0)

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

  1. 根据我的主项目的pom.xml(使用频繁更改的库的项目)创建一个IDEA maven项目。
  2. 将maven项目添加到我的主项目中(单击maven项目选项卡中的“+”图标,然后选择我频繁更改的库的pom.xml)
  3. 修改

    注意:所有模块(来自库和主项目)都有* -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 run配置,以便使用任何配置文件运行任何maven目标(来自我IDEA项目中的任何pom.xml)。
    2. 在IDEA中定义一个简单的单元测试配置(不与maven直接链接,除了类路径是从pom.xml中定义的类路径派生的)
    3. 在IDEA中定义新的 Tomcat / JBoss配置并在其中部署一些工件。 (IDEA检测可部署的工件 - 如pom.xml中的war或ejb)

答案 3 :(得分:0)

我的情况与您相同,我使用的是Intellij 2016.02。

以下是我解决它的方法:

1 - 在Intellij上打开maven面板进入View - &gt;工具Windows - &gt; Maven Projects,然后单击加号绿色按钮(添加maven项目)并从依赖项目中选择pom.xml文件

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

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

已编辑:

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

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

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

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