如果 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 中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 多模块项目中仅运行父 pom.xml

是否可以不在父pom中指定pluginManagement?

Maven以及pom.xml详解

Maven以及pom.xml详解

如何将jar包放入maven本地仓库中

使用 XPATH java 提取 XML 嵌套内容