【发布时间】:2020-10-21 08:50:59
【问题描述】:
我们有 2 个使用 Gradle 和 maven 构建的 java 多模块(复合)项目(位于 2 个存储库中)。 Gradle 项目依赖于 maven 项目,我们需要从 maven 项目中获取反映在 Gradle 项目中的更改。 Gradle 项目是指通过本地 maven repo 使用 repositories > mavenLocal > 内容过滤的 maven 项目。 (尽管 Gradle 不鼓励引用 mavenLocal,但我们在这里没有更好的选择)
repositories {
mavenLocal {
content {
includeGroupByRegex "REGEX"
}
}
maven {
url "REPO_URL"
}
}
当我们通过命令执行 Gradle 构建时,maven 项目的更改会反映在 gradle 项目中。
我们也可以在 IntelliJ IDEA 中打开 maven 和 Gradle 项目。但是在浏览源代码时(假设 Gradle 项目实现了 Gradle 项目的接口,当我们点击 Gradle 项目的已实现类声明中的接口时)它指向本地 maven repo 中源 jar 中的类。有没有一种方法可以让我们将 IDEA 配置为指向已经在 IDE 中导入的 maven 项目上的确切源代码。
请注意以下几点:
- Gradle 项目指的是 maven 项目的确切 SNAPSHOT
- 使用 IntelliJ IDEA 2019.1.3(社区版)
【问题讨论】:
-
在构建 JAR(现在在您的 maven 存储库中)时,您是否构建了源 JAR?当您看到反编译的 JAR 时,您是否还看到“附加源”选项?见:intellij-support.jetbrains.com/hc/en-us/community/posts/…
-
当你说你可以在 IntelliJ 中打开 maven 和 Gradle 项目时,你的意思是作为单独的项目,还是作为同一个项目中的模块?因为如果您将它们作为模块包含在同一个项目中,IntelliJ 应该允许您从一个导航到另一个
-
@DariusX。感谢您指出,它来自源 jar,而不是反编译。源 .jar 也已部署到 Maven 本地存储库。我检查了编辑器中加载的类的路径,它具有以下语法。
<maven_local_repo_path>\<group_id_path>\<artifact_id>\<version>\<artifact_id>-<version>-sources.jar!\<package_id_path>\ClassName.java编辑器中显示的类是不可编辑的(比如我们浏览类时,多个maven项目之间的方法) -
@afterburner 这两个 Maven 和 Gradle 项目也是复合/多模块项目。我尝试将它们添加为单独的项目(工具窗口>添加项目)以及来自现有源的模块(文件>新建>来自现有源的模块)。我什至尝试创建一个空项目并将两个项目添加为模块。但在所有场景中,浏览依赖 Maven 模块的类/方法会直接从本地 maven repo 中的 sources.jar 指向源,而不是从打开的 maven 项目中直接指向源。
-
我假设您使用 Gradle 在 Intellij 中构建,而不是 Maven?那应该自动完成。这有帮助吗? stackoverflow.com/questions/23523573/…
标签: java maven gradle intellij-idea