2014-05-07 31 views
3

我的工作中,我有这对其他项目的POM依赖Android应用程序项目一期工程 是这样的:在开发的IntelliJ Maven的依赖更喜欢本地代码

<dependencies> 
     <dependency> 
      <groupId>some.project/groupId> 
      <artifactId>some.artifact<artifactId> 
      <version>1.0.0</version> 
      <type>apklib</type> 
     </dependency> 
</dependencies> 

我总是想给的IntelliJ使用我在项目中的some.project库中的本地源代码。
问题是它会从服务器拉1.0.0版本并使用它。
我试过使用最新的版本,这工作正常,只要我的some.project库版本更新到服务器上的最新版本。
因为我们有自动构建,将增加some.project的版本,当更改时,我会有一个场景,其中我的源代码说1.0.0,但服务器有1.0.1,并再次intellij将拉服务器apklib

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

谢谢!

回答

0

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

+0

感谢您的回复,我们使用快照依赖关系,所以依赖关系实际上是在1.0.0快照上。 事情是,intellij将下载最新的快照库,而不是使用我的本地代码(所有的模块都在我的项目中) – talarari

4

在Maven Run/Debug Configuration下有一个checkbox“解析工作区工件”,选择它然后按预期工作。

+1

如果没有评论就会downvoted,至少告诉我什么是错误的答案,downvoter。 –

+1

不是downvoter,但我认为这只是解决方案的一部分。我想你也必须确保你在pom中使用正确的版本。 –

+0

这对我有效。 但我认为_resolve Workspace artifacts_设置仅适用于maven run配置。 问题是为了实现这个_while developing_ - 不知道@talarari考虑了什么任务 – ingo

2

您可以在IntelliJ中添加模块依赖关系: 文件 - >项目设置 - >模块单击模块 - >单击依存关系选项卡,然后单击绿色的'+'符号并选择'3。 Module dependency'。添加你想要在本地依赖的模块,点击蓝色箭头将模块放在Maven依赖关系之上。

+0

不幸的是,这是我现在唯一能够使用maven版本范围的工具。 :( – nicou50