可能 IDEA 使用最新的 class 文件解析像 eclipse 和 auto 这样的 maven 子模块
May IDEA resolve maven submodule like eclipse and auto using latest class file
我正在使用 IDEA 构建一个包含大量子模块的大型 maven 项目。而且我找不到 Eclipse 中提供的类似功能。这个功能阻碍了我很多年,这让我无法切换到 IDEA。
在eclipse 中,有一个名为"Enable Workspace Resolution" 的功能。使用此功能,eclipse 工作区中的所有项目将由同一工作区中的其他项目自动解析(Eclipse 将自动更新构建 class 路径,并将依赖项 jar 路径替换为其他项目的输出文件夹,如 target/classes
)。然后依赖项将始终指向最新编译的 class 文件,即使您可以在运行时更新 class 文件(调试时,如果您不更新方法签名而只更新方法内容,它将立即生效) .
例如,对于像这样的 maven 项目:
Project
|- module1
|- module2
|- pom.xml
module1 依赖于module2,在eclipse 中,module1 不会从maven repo 中找到module2.jar,而是直接从module2/target/classes(编译输出文件夹)中找到。但是 IDEA 总是会尝试从 maven repo 中找到 module2.jar。
有什么想法吗?
在我们的项目中,我们使用多个 Maven 模块,这些模块依赖于我们的其他模块,我对 IDEA 没有任何类似于您描述的问题。
在我看来,有两个重要时刻需要考虑:
始终将模块作为 maven 模块导入 IDEA。换句话说,单击模块的 File
-> New
-> Module from Existing Sources...
-> select pom.xml
。否则IDEA不会在pom.xml
改变时下载改变的依赖。
使用工作空间中存在的 DEVELOPMENT-SNAPSHOT
(或完全相同)版本的依赖项。如果你指定了一些其他发布的版本,那么(通过 IDEA)maven 将从 maven repo 下载它。
在多模块 Maven 项目中 IDE 将解析对模块源的依赖,而不是对本地 Maven jar 库的依赖,如果 Maven 坐标(groupId
、artifactId
、 versionId
) 是一样的。
同样对于 'SNAPSHOT' 版本,'LATEST' 版本的依赖性将得到解决。
对于没有 'SNAPSHOT' 依赖关系的版本,声明为 'LATEST' 和 'RELEASE' 的版本将得到解决。
当然,这些模块应该存在于当前 IDE 项目中,并作为 Maven 模块添加。
我正在使用 IDEA 构建一个包含大量子模块的大型 maven 项目。而且我找不到 Eclipse 中提供的类似功能。这个功能阻碍了我很多年,这让我无法切换到 IDEA。
在eclipse 中,有一个名为"Enable Workspace Resolution" 的功能。使用此功能,eclipse 工作区中的所有项目将由同一工作区中的其他项目自动解析(Eclipse 将自动更新构建 class 路径,并将依赖项 jar 路径替换为其他项目的输出文件夹,如 target/classes
)。然后依赖项将始终指向最新编译的 class 文件,即使您可以在运行时更新 class 文件(调试时,如果您不更新方法签名而只更新方法内容,它将立即生效) .
例如,对于像这样的 maven 项目:
Project
|- module1
|- module2
|- pom.xml
module1 依赖于module2,在eclipse 中,module1 不会从maven repo 中找到module2.jar,而是直接从module2/target/classes(编译输出文件夹)中找到。但是 IDEA 总是会尝试从 maven repo 中找到 module2.jar。
有什么想法吗?
在我们的项目中,我们使用多个 Maven 模块,这些模块依赖于我们的其他模块,我对 IDEA 没有任何类似于您描述的问题。
在我看来,有两个重要时刻需要考虑:
始终将模块作为 maven 模块导入 IDEA。换句话说,单击模块的
File
->New
->Module from Existing Sources...
-> selectpom.xml
。否则IDEA不会在pom.xml
改变时下载改变的依赖。使用工作空间中存在的
DEVELOPMENT-SNAPSHOT
(或完全相同)版本的依赖项。如果你指定了一些其他发布的版本,那么(通过 IDEA)maven 将从 maven repo 下载它。
在多模块 Maven 项目中 IDE 将解析对模块源的依赖,而不是对本地 Maven jar 库的依赖,如果 Maven 坐标(groupId
、artifactId
、 versionId
) 是一样的。
同样对于 'SNAPSHOT' 版本,'LATEST' 版本的依赖性将得到解决。
对于没有 'SNAPSHOT' 依赖关系的版本,声明为 'LATEST' 和 'RELEASE' 的版本将得到解决。
当然,这些模块应该存在于当前 IDE 项目中,并作为 Maven 模块添加。