如果 pom.xml 不在根级别,我如何将 maven 项目添加到 intellij idea 中
Posted
技术标签:
【中文标题】如果 pom.xml 不在根级别,我如何将 maven 项目添加到 intellij idea 中【英文标题】:How do I add maven project into intellij idea if pom.xml is not in the root level 【发布时间】:2017-11-17 04:10:33 【问题描述】:已经 2 天了,我现在正在拔头发。 我是 Java 开发新手 - 试图将项目导入到具有以下文件结构的 intellij IDEA:
project_dir
data_files
file1.json
file2.json
..
doc_files
file1.md5
file2.md5
java_project
src/*
pom.xml
readme.md
.git
.gitignore
我不明白如何将此类项目导入 intellij,因此它仍然可以编译,我仍然可以看到非 java 目录,如 data_files 和 doc_files。
这就是我尝试过的:
a) 我可以进入 intellij => open => 选择 project_dir 文件夹。
然后我可以看到所有文件,但项目无法编译。 IDE 抱怨未定义依赖项。
如果我右键单击 pom.xml 并选择“添加为 maven 项目”-> intellij 将项目根替换为 java_project
目录,我再也看不到 data_files 和 doc_files。
b) intellij => 打开 => 选择 pom.xml 文件。 我可以看到源文件和项目编译,但我看不到 data_files 和 doc_files 并且无法添加它们。
欢迎任何帮助。 谢谢
【问题讨论】:
你做的第一种方法是正确的。我认为您必须构建项目,然后它将消除缺少的依赖问题。如果它继续,我认为您可以尝试通过 mvn 强制构建项目。让我们知道结果。 @chathura rupasinghe 是的——但是当我点击 n 构建时——它不会构建任何东西。 IDEA 似乎根本不了解源文件位于 project_dir/java_project 下。 have you tried it like this 【参考方案1】:你试过了吗
File ->
New ->
Project from Existing Sources ->
select the pom ->
set the root directory to project_dir
fyi 更典型的 maven 布局是
project_dir
data_files
file1.json
file2.json
..
doc_files
file1.md5
file2.md5
src/*
pom.xml
readme.md
.git
.gitignore
【讨论】:
是的 - 我将根目录更改为 project_dir iIDEA 的那一刻不再显示任何 pom.xml 文件以供选择 您是否尝试过递归检查项目搜索?你的 pom 应该会出现。 纳撒尼尔 - 是的。猜猜会发生什么 - java_project 自动成为项目的根目录,而我看不到我的其他目录。 是的,这是有道理的。我建议更改结构,使 pom 像上面一样位于根目录中,没有理由不将 pom 与数据文件放在同一目录中。如果您希望您的项目访问它们,无论如何您都需要它。否则,没有真正需要能够在 intellij 中看到它们,您可以使用其他工具对其进行编辑。这也表明您的数据文件可能应该在一个单独的 git 项目中。 纳撒尼尔啊。我只是脑残。是的 - 是的,是的。我刚刚按照您建议的方式重组了我的项目,现在一切正常并按预期显示。谢谢!【参考方案2】:我不认为,这是可能的。不过,您可以做的是使用以下 POM 添加一个虚假的聚合父模块:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>qa</groupId>
<artifactId>fake-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>java_project</module>
</modules>
</project>
并导入它而不是导入 java_project 的 POM。你将拥有 following files structure
或者,您可以考虑将您的 doc_files 和 data_files 移动到 java_project 文件夹中,这对我来说看起来更自然。
【讨论】:
"将您的 doc_files 和 data_files 移动到 java_project 文件夹中" => omg。我不知道为什么我以前没有想到这一点。完成了,完成了。问题解决了。【参考方案3】:如果您希望它们在编译后与类文件一起出现,则包含 json 和 md5 文件的文件夹必须位于资源文件夹中。 maven layout
【讨论】:
就是这样 - 我不需要它们在编译后出现,但我需要它们在 repo 中。以上是关于如果 pom.xml 不在根级别,我如何将 maven 项目添加到 intellij idea 中的主要内容,如果未能解决你的问题,请参考以下文章