Intellij maven依赖更喜欢本地代码

tal*_*ari 7 pom.xml maven intellij-13

我正在开发一个项目,其中我有一个Android应用程序项目,其中pom依赖于其他项目,如下所示:

<dependencies>
        <dependency>
            <groupId>some.project/groupId>
            <artifactId>some.artifact<artifactId>
            <version>1.0.0</version>
            <type>apklib</type>
        </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

在开发时我总是希望Intellij使用我在项目中的some.project库中的本地源代码.
问题是它会从服务器中提取1.0.0并使用它.
我尝试使用LATEST作为版本,只要我的some.project库版本更新到服务器上的最新版本,这就可以正常工作.
因为我们有自动构建,会在更改时增加some.project的版本,我将有一个场景,其中我的源代码为1.0.0,但服务器有1.0.1,再次intellij将拉取服务器apklib

任何建议如何实现这一目标?如果我可以使用开发配置文件以某种方式定义这个仅用于开发,并使用prod配置文件来使用确切的版本号(它应该)将是惊人的.

谢谢!

Jin*_*fei 7

在Maven运行/调试配置下有一个复选框 "解析Workspace工件",选择它然后它将按预期工作.

  • 如果在没有评论的情况下投票,那就太烦人了,至少告诉我答案中的错误,downvoter. (7认同)
  • 不是反对者,但我认为这只是解决方案的一部分。我认为您还必须确保在 pom.xml 中使用正确的版本。 (3认同)
  • 那对我有用。但是我认为_resolve Workspace artifacts_设置仅适用于Maven运行配置。问题是要在开发过程中实现这一目标-不知道@talarari考虑了什么任务 (3认同)

小智 6

您可以在IntelliJ中添加模块依赖项:File-> Project Settings-> Modules在模块上单击->单击Dependencies选项卡,然后单击绿色的“ +”号并选择“ 3”。“模块依赖项” ..添加要本地依赖的模块,然后单击蓝色箭头以使该模块位于Maven依赖项之上。


Eng*_*ery 0

假设您将项目组织为多模块项目,并且您正在讨论对作为项目模块之一的库的依赖项,那么您需要使用快照依赖项,并且需要使用完整的 Maven发布过程。事实上,您依赖于给定库的预构建静态版本,但您需要 IntelliJ 来查看您编译的源和类,并且快照依赖项正是用于此目的。

  • 感谢您的回复,我们正在使用快照依赖项,因此该依赖项实际上位于 1.0.0-snapshot 上。问题是,intellij 将下载最新的快照库,而不是使用我的本地代码(所有模块都在我的项目中) (2认同)