IntelliJ-将Java项目/模块转换为Maven项目/模块


398

我有一个关于Bitbucket的项目。仅提交源。为了将项目检索到新机器上,我在IntelliJ中使用了Version Control> Checkout from Version Control。

然后,它询问我是否要从此源创建一个新项目,对此我回答“是”。到目前为止,一切都很好。它为我创建了一个不错的Java小项目,由一个模块组成。

但是,将这个项目引入IntelliJ的目的是将其变成Maven项目。我找不到任何可以让我做到这一点的选择!

有没有办法让IntelliJ仅为我生成一个基本的空pom.xml,并为其提供名称,artifactId和存储库?或者,是否首先有办法将项目导入为Maven项目?(每当我尝试从现有资源创建项目时,它都只提供Java项目的选项。)

Answers:


760

右键单击该模块,选择“添加框架支持...”,然后检查“ Maven”技术。

(这还会创建一个pom.xml供您修改。)

如果您要添加源存储库元素,我认为您需要手动执行-不确定。

在IntelliJ 13之前,这不会将项目转换为Maven标准目录布局,而是会在13以上。


3
正是我想要的!是的,我的意思是添加默认的maven2“中央”存储库元素。但是我可以自己补充一点,没什么大不了的。
尼尔·特拉夫特

1
凉。但是您不必添加它;它已经是默认值。
戴夫·牛顿

46
如果我没有这种选择会怎样?

2
哪个“插件”?我有2个Maven插头(IntelliJ默认使用)。在添加框架中仍然没有“ Maven”选项
Nick

1
很抱歉,恢复了这篇旧文章,但是有没有一种自动的方法来将jsf依赖项放入pom?创建了pom,但它是空的,我想在pom中拥有jsf项目的所有适当依赖项。
MrSir

76

从中受益的视觉效果。

在此处输入图片说明

右键单击项目名称(在此示例中为“ test”)后,选择“添加框架支持”并选中“ Maven”选项。


非常感谢你.....
smack cherry

31
  1. 打开“ Maven项目”(右侧的标签)。
  2. 使用“添加Maven项目”
  3. 找到你的pom.xml

1
当我有许多子项目的父级导演git URL时,这些子项目未被识别为Maven。这个答案有所帮助。为了清楚起见,该功能在Maven工具窗口中可用。
西尔维斯特,

这个答案帮助我将Gradle项目重新关联到Maven。只需在类似的Gradle菜单上取消链接(使用减号)即可。
vphilipnyc

6

我想添加一个重要的提示,即转换这样的项目可能会产生副作用,当您拥有更大的项目时,这种影响会很明显。这是由于Intellij Idea(2017)仅从pom.xml中进行了一些重要设置,然后才可能导致混淆,至少以下部分会受到影响:

  1. 模块的注释设置已更改
  2. 更改了模块的编译器输出路径
  3. 资源设置被完全忽略,仅取自pom.xml
  4. 模块依赖关系混乱,必须检查
  5. 模块的语言/编码设置已更改

所有这些要点都需要进行检查和调整,但是在此之后,它就像是魅力。

更不幸的是,没有创建足够的pom.xml模板,我添加了一个示例,该示例可能有助于解决大多数问题。

<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>Name</groupId>
<artifactId>Artifact</artifactId>
<version>4.0</version>
<properties>
    <!-- Generic properties -->
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
    <!--All dependencies to put here, including module dependencies-->
</dependencies>
<build>
    <directory>${project.basedir}/target</directory>
    <outputDirectory>${project.build.directory}/classes</outputDirectory>
    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
    <testSourceDirectory> ${project.basedir}/src/test/java</testSourceDirectory>

    <resources>
        <resource>
            <directory>${project.basedir}/src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <annotationProcessors/>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

编辑2019:

  • 添加了递归资源扫描
  • 添加了目录规范,这对于避免IDEA混淆内容根结构可能很重要

3

我有不同的情况,但仍然落在这个答案上。
我已经导入了我的根项目文件夹,其中包含多个Maven项目以及该项目中使用的其他一些东西。
IntelliJ可以识别Java文件,但不能解决Maven依赖关系。

我通过在每个pom上单击鼠标右键,然后单击“添加为maven项目”来解决此问题。


3

我已经通过执行以下步骤解决了相同的问题:

  1. 文件>关闭项目

  2. 导入项目

  3. 通过系统文件弹出窗口选择项目

  4. 选中“从外部模型导入项目”单选按钮,然后选择“ Maven”条目

  5. 还有一些下一步按钮(选择JDK,...)

然后,该项目将作为Maven模块导入。


2

这已为我解决:打开右侧的maven项目选项卡。添加pom(如果尚不存在),然后单击选项卡左上方的刷新。


0

最简单的方法是将项目直接添加为Maven项目。为此,在左侧的项目浏览器中,右键单击该项目的POM文件,在上下文菜单的底部,您将看到一个名为“添加为Maven项目”的选项,单击该选项。这将自动将项目转换为Maven项目

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.