LINUX.ORG.RU

Как в IDEA 13 (CE) создать проект на Maven?

 , ,


0

1

Скажите, в IDEA 13 (CE) создать проект на Maven с goals: clean, test, run, install вообще реально? Что для этого надо сделать, я не понимаю. В NetBeans всё просто и очевидно, а тут что за трэш и угар с конфигурациями?

MavenProject/pom.xml (практически дефолтный):

<?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>MavenProject</groupId>
    <artifactId>MavenProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

</project>

MavenProject/src/main/java/ru/vsprog/mavenproject/Main.java:

package ru.vsprog.mavenproject;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
Как мне его запустить средствами Maven?

Делал как здесь: http://vsprog.ru/258 — окно «Maven Projects» в IDEA не нашёл. В последней версии его нет что ли?

Тот же проект в NetBeans очищается-собирается:

cd /usr/home/igor/IdeaProjects/MavenProject; JAVA_HOME=/usr/local/openjdk7 M2_HOME=/usr/home/igor/bin/apache-maven-3.1.1 /usr/home/igor/bin/apache-maven-3.1.1/bin/mvn clean install
Scanning for projects...
                                                                        
------------------------------------------------------------------------
Building MavenProject 1.0-SNAPSHOT
------------------------------------------------------------------------

--- maven-clean-plugin:2.5:clean (default-clean) @ MavenProject ---
Deleting /usr/home/igor/IdeaProjects/MavenProject/target

--- maven-resources-plugin:2.6:resources (default-resources) @ MavenProject ---
Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
Copying 0 resource

--- maven-compiler-plugin:2.5.1:compile (default-compile) @ MavenProject ---
File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
Compiling 1 source file to /usr/home/igor/IdeaProjects/MavenProject/target/classes

--- maven-resources-plugin:2.6:testResources (default-testResources) @ MavenProject ---
Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
skip non existing resourceDirectory /usr/home/igor/IdeaProjects/MavenProject/src/test/resources

--- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ MavenProject ---
Nothing to compile - all classes are up to date

--- maven-surefire-plugin:2.12.4:test (default-test) @ MavenProject ---
No tests to run.

--- maven-jar-plugin:2.4:jar (default-jar) @ MavenProject ---
Building jar: /usr/home/igor/IdeaProjects/MavenProject/target/MavenProject-1.0-SNAPSHOT.jar

--- maven-install-plugin:2.4:install (default-install) @ MavenProject ---
Installing /usr/home/igor/IdeaProjects/MavenProject/target/MavenProject-1.0-SNAPSHOT.jar to /home/igor/.m2/repository/MavenProject/MavenProject/1.0-SNAPSHOT/MavenProject-1.0-SNAPSHOT.jar
Installing /usr/home/igor/IdeaProjects/MavenProject/pom.xml to /home/igor/.m2/repository/MavenProject/MavenProject/1.0-SNAPSHOT/MavenProject-1.0-SNAPSHOT.pom
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 2.477s
Finished at: Fri Jan 17 22:32:32 VOLT 2014
Final Memory: 14M/122M
------------------------------------------------------------------------
и нормально выполняется:
cd /usr/home/igor/IdeaProjects/MavenProject; JAVA_HOME=/usr/local/openjdk7 M2_HOME=/usr/home/igor/bin/apache-maven-3.1.1 /usr/home/igor/bin/apache-maven-3.1.1/bin/mvn "-Dexec.args=-classpath %classpath ru.vsprog.mavenproject.Main" -Dexec.executable=/usr/local/openjdk7/bin/java org.codehaus.mojo:exec-maven-plugin:1.2.1:exec
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...
                                                                        
------------------------------------------------------------------------
Building MavenProject 1.0-SNAPSHOT
------------------------------------------------------------------------

--- exec-maven-plugin:1.2.1:exec (default-cli) @ MavenProject ---
Hello World
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 0.839s
Finished at: Fri Jan 17 22:33:22 VOLT 2014
Final Memory: 5M/86M
------------------------------------------------------------------------
— без всякого дополнительного мозгоклюйства!

★★★★★

Последнее исправление: iZEN (всего исправлений: 3)

Так редактируй pom'ку как надо, потом выбирай на панели раздел Maven и там выбирай нужный goal.

kovrik ★★★★★
()
Ответ на: комментарий от roguepnz

Спасибо! Плагин включен, естественно. Как бы я без него создал проект с нуля?

iZEN ★★★★★
() автор топика
Ответ на: комментарий от kovrik

А как «надо» отредактировать pom.xml, чтобы появился goal «run»? (В NetBeans для этого ничего не нужно редактировать, только один раз указать запускаемый файл, когда среда спросит).

iZEN ★★★★★
() автор топика

создать проект на Maven с goals: clean, test, run, install вообще реально?

Maven это не ant, он все перечисленное умеет сразу после создания проекта. Кроме run, не припоминаю, чтобы это был дефолтный goal в maven. Разве что через плагин подрубить. А netbeans для запуска проекта скорее всего использовал просто скомпиленные maven'ом классы.

По поводу панелек. Они все в новой идее скрыты, чтобы полезное место не занимать. При первом запуске идеи должен был появиться попап (использую энтерпрайз версию, но в коммьюнити эдинш должно быть так же) с уведомлением, типа клацните в пипку на которую я указываю стрелочкой и вылезут все панели. Если что, пипка в левом нижнем углу, а изображена на ней идея с панелями (схематическое изображение). Еще можно нажать shift+ctrl+a и в появившемся окне ввести maven, тебе предложат открыть maven tool window.

f1xmAn ★★★★★
()
Ответ на: комментарий от iZEN

А как «надо» отредактировать pom.xml, чтобы появился goal «run»?

Ну ты понял.

f1xmAn ★★★★★
()
Ответ на: комментарий от iZEN

У мавена нет цели «run». Netbeans обманывает. Можно сделать mvn exec:java -Dexec.mainClass=«com.example.Main», скорее всего нетбинс это и делает «под капотом» и эту цель можно прописать в idea. А вообще проще всего запускать main-класс непосредственно, это гораздо быстрее и ничем не хуже.

Legioner ★★★★★
()

Привет!

Ответ с красиво отформатированным листингом есть здесь (в самом заплюсованном комменте, где 62 плюса): http://stackoverflow.com/questions/9846046/run-main-class-of-maven-project

Тот кусок мавен-проекта что ты привел - это просто описание пакета. Еще нужно в него дописать, что пакет можно запускать. По ссылке всё есть.

В Нетбинсе как раз непросто, потому что он творит какую-то магию, которую нету в файле описания проекта.

stevejobs ★★★★☆
()

pom.xml для идеи это файл по которому она генерит свои проектные файлы. После генерации проектных файлов совсем не обязательно работать через мавен, намного удобнее (и на порядок быстрее) работать через средства идеи, благо она может подтянуть многие выкрутасы мавена (но, конечно, не все).

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от Legioner

Всё верно. Maven в стандартном жизненном цикле приложения не определяет отдельную цель «run».

Тестовый класс удалось запустить с помощью двух последовательных команд:

> mvn compile
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenProject 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MavenProject ---
[debug] execute contextualize
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenProject ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /usr/home/igor/IdeaProjects/MavenProject/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.669s
[INFO] Finished at: Sat Jan 18 14:26:27 VOLT 2014
[INFO] Final Memory: 8M/149M
[INFO] ------------------------------------------------------------------------
и следом:
> mvn exec:java -Dexec.mainClass="ru.vsprog.mavenproject.Main"
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenProject 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> exec-maven-plugin:1.2.1:java (default-cli) @ MavenProject >>>
[INFO] 
[INFO] <<< exec-maven-plugin:1.2.1:java (default-cli) @ MavenProject <<<
[INFO] 
[INFO] --- exec-maven-plugin:1.2.1:java (default-cli) @ MavenProject ---
Hello World
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.255s
[INFO] Finished at: Sat Jan 18 14:26:54 VOLT 2014
[INFO] Final Memory: 7M/149M
[INFO] ------------------------------------------------------------------------
Цель
exec:java -Dexec.mainClass="ru.vsprog.mavenproject.Main"
можно прописать в конфигурации запуска проекта в IDEA, и она тоже так же выполнится при условии, что цель компиляции перед этим выполнена.

iZEN ★★★★★
() автор топика
Последнее исправление: iZEN (всего исправлений: 2)

Создать проект через maven archetype (любой, по вкусу), и потом в idea его импортировать.

BattleCoder ★★★★★
()
Ответ на: комментарий от stevejobs

Благодарю за детали.

iZEN ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.