Цель exec-maven-plugin не запускается во время сборки - PullRequest
4 голосов
/ 02 марта 2011

Hallo,

Я пытаюсь запустить метод main во время процесса сборки maven.Поэтому я добавил exec-maven-plugin и следующий фрагмент к своему pom.xml

<plugin>
     <!-- http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ -->
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>exec-maven-plugin</artifactId>
     <version>1.1.1</version>
     <executions>
      <execution>
       <id>compile-reports</id>
       <phase>compile</phase>
       <goals>
        <goal>java</goal>
       </goals>
       <configuration>
        <mainClass>at.xyz.dls.util.JasperReportCompiler</mainClass>
       </configuration>
      </execution>
     </executions>
    </plugin>

Основной класс существует и также выполняется, когда я вызываю его из командной строки:

mvn exec:java -Dexec.mainClass="at.xyz.dls.util.JasperReportCompiler"

Я также попытался создать пустой новый проект для проверки, если другая зависимость в pom вызывает проблему, но не увенчалась успехом.В файле maven settings.xml в папке ~ / .m2 есть только запись для зеркала, но нет профилей или чего-либо еще, что могло бы вызвать проблему.

Он просто не запускается.Когда я удалил все свои артефакты в репозитории в org.codehouse, он не загрузил exec-maven-plugin.Только когда я позвонил из командной строки.

Есть подсказки?Заранее спасибо!

edit: я забыл упомянуть, что использовал "mvn clean install".поэтому он должен был пройти фазу компиляции ...

edit:

до сих пор я не мог решить проблему.Спасибо за ваши ответы до сих пор!Я постараюсь дать всю информацию еще раз, и, надеюсь, один из вас, ребята, найдет ту подозрительную часть.Я понятия не имею ...

Что я сделал:

  • Удалите папку org / codehouse / mojo в моем прокси-сервере maven.просто чтобы показать, когда загружены зависимости.
  • показать некоторую информацию о версии java и maven
  • собрать проект с помощью: mvn -clean install (который должен пройти этап тестирования для выполнения моего основного метода))
  • выполнить метод main, чтобы показать, exec-maven-plugin загружается только после этого и работает

Насколько я понял, вызов "mvn clean install" должен пройтифаза теста (тесты выполняются ...), поэтому должен быть вызван exec-maven-plugin, который должен выполнить основной метод.Я прав?

D:\Eclipse-3.6.1-JSF\ws\exec-test>java -version java version "1.6.0_21" Java(TM) SE Runtime Environment (build 1.6.0_21-b07) Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

D:\Eclipse-3.6.1-JSF\ws\exec-test>mvn -version Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200) Java version: 1.6.0_21 Java home: C:\Programme\Java\jdk1.6.0_21\jre Default locale: de_AT, platform encoding: Cp1252 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows" D:\Eclipse-3.6.1-JSF\ws\exec-test>mvn clean install 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Unnamed - at.test:exec-test:jar:0.0.1-SNAPSHOT 
[INFO] task-segment: [clean, install] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [clean:clean {execution: default-clean}] 
[INFO] Deleting directory D:\Eclipse-3.6.1-JSF\ws\exec-test\target 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 0 resource 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] Compiling 1 source file to D:\Eclipse-3.6.1-JSF\ws\exec-test\target\classes 
[INFO] [resources:testResources {execution: default-testResources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 0 resource 
[INFO] [compiler:testCompile {execution: default-testCompile}] 
[INFO] Compiling 1 source file to D:\Eclipse-3.6.1-JSF\ws\exec-test\target\test-classes 
[INFO] [surefire:test {execution: default-test}] 
[INFO] Surefire report directory: D:\Eclipse-3.6.1-JSF\ws\exec-test\target\surefire-reports

T E S T S

Running at.test.ExecTestTest JUnit Test call: end of junit test.


Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0


[INFO] [jar:jar {execution: default-jar}] 
[INFO] Building jar: D:\Eclipse-3.6.1-JSF\ws\exec-test\target\exec-test.jar 
[INFO] [install:install {execution: default-install}] 
[INFO] Installing D:\Eclipse-3.6.1-JSF\ws\exec-test\target\exec-test.jar to D:\maven.m2\repository\at\test\exec-test\0.0.1-SNAPSHOT\exec-test-0.0.1-SNAPSHOT.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3 seconds 
[INFO] Finished at: Thu Mar 10 12:07:08 CET 2011 
[INFO] Final Memory: 15M/37M 
[INFO] ------------------------------------------------------------------------ D:\Eclipse-3.6.1-JSF\ws\exec-test>mvn exec:java -Dexec.mainClass="at.test.ExecTest" 
[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'exec'. Downloading: http://pced06.vab.sozvers.at:8080/artifactory/repo/org/codehaus/mojo/exec-maven-plugin/1.2/exec-maven-plugin-1.2.pom 6K downloaded (exec-maven-plugin-1.2.pom) Downloading: http://pced06.vab.sozvers.at:8080/artifactory/repo/org/codehaus/mojo/exec-maven-plugin/1.2/exec-maven-plugin-1.2.jar 35K downloaded (exec-maven-plugin-1.2.jar) 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Unnamed - at.test:exec-test:jar:0.0.1-SNAPSHOT 
[INFO] task-segment: [exec:java] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing exec:java [WARNING] Removing: java from forked lifecycle, to prevent recursive invocation. 
[INFO] No goals needed for project - skipping 
[INFO] [exec:java {execution: default-cli}]


[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 7 seconds 
[INFO] Finished at: Thu Mar 10 12:07:20 CET 2011 
[INFO] Final Memory: 5M/15M 
[INFO] ------------------------------------------------------------------------        

D:\Eclipse-3.6.1-JSF\ws\exec-test>

теперь снова измененный 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>at.test</groupId>
  <artifactId>exec-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <build>
    <finalName>exec-test</finalName>
    <defaultGoal>install</defaultGoal>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
        <plugin>
<!-- http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
  <execution>
    <id>compile-reports</id>
    <phase>test</phase>
    <goals>
      <goal>java</goal>
    </goals>
    <configuration>
      <mainClass>at.test.ExecTest</mainClass>
    </configuration>
  </execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.2</version>
  </dependency>
</dependencies>

Основной класс:

package at.test;

public class ExecTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    System.out.println("##################################");
  }
}

И тестовый класс JUnit:

package at.test;
import org.junit.Test;
import at.test.ExecTest;

public class ExecTestTest {

  @Test
    public void testTestTest() {
      System.err.println("JUnit Test call:");
      ExecTest.main(null);
      System.err.println("end of junit test.");
    }
}

Ответы [ 3 ]

14 голосов
/ 07 апреля 2011

Наконец я нашел проблему.Была довольно глупая ошибка:

В pom.xml я использовал <pluginManagement> вокруг узла <plugins>.

Maven не жаловался, но игнорировал все конфигурации плагинов.Может быть, кто-то может использовать эту информацию ...

Спасибо за вашу помощь!

2 голосов
/ 02 марта 2011

Фаза компиляции может не подходить, вы пробовали

 <phase>test</phase>
1 голос
/ 04 марта 2011

Если вы установили его на фазу компиляции, вам нужно указать maven, что необходимо запускать компиляцию при запуске. Вы не проходите ни одного этапа с вашей командой Maven. Вы должны иметь mvn compile exec:java ... или выше (проверить, установить, ...).

Это мой плагин exec maven (с пакетом mvn clean):

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
                <execution>
                    <phase>test</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.xxx.LanguageGenerator</mainClass>
                <arguments>
                    <argument>${project.build.outputDirectory}/build/PMLanguage.xls</argument>
                    <argument>PM${project.version}</argument>
                    <argument>${project.build.outputDirectory}/com/laco/projectmaster/props/resources</argument>
                    <argument>Created during maven build (POM Version:
                        ${project.version})</argument>
                </arguments>
            </configuration>
        </plugin>
...