14

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

<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 版本并使用它。
我尝试使用 LATEST 作为版本,只要我的 some.project 库版本更新到服务器上的最新版本,它就可以正常工作。
因为我们有自动构建,当进行更改时会增加一些项目的版本

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

谢谢!

4

6 回答 6

13

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

于 2016-05-25T20:08:04.773 回答
9

在 Maven 运行/调试配置下有一个“解决工作区工件”复选框,选择它然后它将按预期工作。

于 2016-03-02T05:47:58.247 回答
0

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

于 2014-05-07T19:11:22.587 回答
0

这适用于 Maven 项目,方式如下:

  • 将要使用的依赖项添加到 Maven 项目选项卡。
  • 导航到您正在查找的类的实现
  • 进入实现后,您可以导航回声明的超级方法。

那是Navigate -> Implementation(s)ALT+COMMAND+B(在 Mac 地图上)。然后,Intellij 将为您提供从依赖列表中的 JAR 或附加的 Maven 项目中的源代码中反编译类的选项。

例如,我在bankRooskie Bank 的项目中,我想Account查看bank-domain. 我单击帐户对象声明并按 ALT+COMMAND+B。从弹出菜单中,我从选择中没有“(Maven:com.rooskiebank.bank-domain.jar)”的源列表中选择定义。

IMO 这是一种尴尬的做事方式。尽管我很喜欢它,但我发现 Intellij 很难在具有多个内部库的企业级系统中使用,我仍然经常为它们使用 Eclipse。Intellij 与 Git 配合得更好,非常适合独立的微服务。

我想 Gradle 以类似的方式工作。

于 2018-04-12T19:18:48.313 回答
0

只是一个小提示如何使用 Gradle 做同样的事情。假设您有两个带有libapp的工作区。该lib部署到一些maven repo,需要按以下方式描述:

// build.gradle
group 'lib.group'
version 'lib.version'

// settings.gradle
rootProject.name = 'lib.name'

虽然应用程序依赖项如下:

// build.gradle
compile "lib.group:lib.name:lib.version"

因此,app模块使用lib作为 maven 依赖项。现在,您可以使用 File |将lib源代码导入应用程序工作区。新 | 来自现有来源的模块。从 Gradle 工具窗口刷新项目后,您将在应用工作区中获得两个模块libapp 。但是,即使在重新导入 Gradle 之后,lib依赖项仍将指向 maven 存储库,您可以在 File | 项目结构。

这里要做的技巧是在 Gradle 工具窗口中的应用程序模块上单击鼠标右键,然后选择Composite Build Configuration选项。然后,在弹出窗口中选择本地lib模块以将其包含在应用程序模块构建中。现在,在为整个工作区再次重新导入 Gradle deps 之后,您将获得lib的 maven 依赖项替换为本地依赖项。

于 2019-11-29T12:44:45.443 回答
0

我们正在处理同样的问题...

“如果这个 Maven 项目在 IDE 中打开并且它的版本与安装在本地 Maven 存储库中的版本匹配,IDEA 应该将依赖关系解析为模块依赖类型(而不是本地 jar Maven 库)。”

https://intellij-support.jetbrains.com/hc/en-us/community/posts/206836605-Always-prefer-local-module-source-over-Maven-dependencies

我们的解决方案是在 pom.xml 中添加本地 Maven 配置文件并指定本地依赖版本。要使其工作,您必须打开本地配置文件

<profiles>
    <profile>
        <id>local</id>
        <properties>
            <dependency.version>x.x.x</dependency.version>
        </properties>
    </profile>
</profiles>

当本地依赖更新时,你也必须注意更新这个版本,但目前这是我们找到的最好的解决方案,它对我们有用。

于 2019-06-04T20:06:19.830 回答