Maven을 사용하여 프로그램을 어떻게 실행합니까?


120

Maven 목표가 Java 클래스의 실행을 트리거하도록하고 싶습니다. 나는 Makefile라인을 통해 마이그레이션하려고합니다 .

neotest:
    mvn exec:java -Dexec.mainClass="org.dhappy.test.NeoTraverse"

그리고 저는 현재하고있는 mvn neotest것을 생산하고 싶습니다 make neotest.

어느 쪽도 아니 간부 인 플러그인 문서메이븐 개미 작업 페이지는 간단한 예를 들어 어떤 종류 없었다.

현재 저는 다음 위치에 있습니다.

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.1</version>
  <executions><execution>
    <goals><goal>java</goal></goals>
  </execution></executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

그래도 명령 줄에서 플러그인을 트리거하는 방법을 모르겠습니다.

답변:


149

으로 글로벌 구성 당신이 간부-받는다는 - 플러그인 정의했다고 :

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4.0</version>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

호출 mvn exec:java명령 줄에서하는 클래스를 실행하도록 구성되어있는 플러그인을 호출합니다 org.dhappy.test.NeoTraverse.

따라서 명령 줄에서 플러그인을 트리거하려면 다음을 실행하십시오.

mvn exec:java

이제 exec:java표준 빌드의 일부로 목표 를 실행하려면 목표를 기본 수명주기 의 특정 단계 에 바인딩해야합니다 . 이렇게하려면 요소 에서 목표를 바인딩 할을 선언하십시오 .phaseexecution

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <id>my-execution</id>
      <phase>package</phase>
      <goals>
        <goal>java</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>org.dhappy.test.NeoTraverse</mainClass>
  </configuration>
</plugin>

이 예제를 사용하면 package단계 중에 클래스가 실행됩니다 . 이것은 단지 예일 뿐이며 필요에 맞게 조정하십시오. 플러그인 버전 1.1에서도 작동합니다.


1
처음에는 혼란 스러웠습니다. exec:javaScala 및 Clojure 코드에도 사용할 수 있으며 Java 코드 자체 일 필요는 없습니다.
rightfold

8
버전은 1.4.0이어야한다
Walery Strauch

나를 위해 일했습니다! 고마워!
mrddr

25

여러 프로그램을 실행하려면 profiles섹션이 필요했습니다 .

<profiles>
  <profile>
    <id>traverse</id>
    <activation>
      <property>
        <name>traverse</name>
      </property>
    </activation>
    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <configuration>
            <executable>java</executable>
            <arguments>
              <argument>-classpath</argument>
              <argument>org.dhappy.test.NeoTraverse</argument>
            </arguments>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

그러면 다음과 같이 실행됩니다.

mvn exec:exec -Ptraverse

1
<argument>-classpath</argument><classpath />라인 에 무슨 일이 일어나고 있습니까? 나는 그것이 옳다고 생각하지 않는다.
GreenGiant 2013 년

1
예, <classpath />실수로 태그가 도착 했을 가능성이 높 으므로 제거해야합니다. 그 라인은 다음과 같이 보일 것입니다.<argument>-classpath</argument>
Dimitry K

7
그것은 실수가 아닙니다. 이는 pom.xml에 지정된 종속성을 클래스 경로의 일부로 사용해야 함을 나타냅니다.
user924272
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.