2010-04-06 4 views
6

Я хотел бы добавить дополнительный путь к exec-maven-плагину.
Помимо пути% classpath, я хотел бы добавить дополнительный путь к каталогу, содержащему ресурсы (/ Users/kornp/resources). В настоящее время мой ПОМ выглядит следующим образом:Добавить дополнительный путь к exec-maven-plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <configuration> 
    <executable>java</executable> 
    <classpathScope>runtime</classpathScope> 
    <arguments> 
     <argument>%classpath:/Users/kornp/resources</argument> 
     <argument>org.drrabbit.maventest.App</argument> 
    </arguments> 
    </configuration> 
</plugin> 

Как я должен настроить это?

ответ

2

Пробовал ли вы использовать параметр commandlineArgs (как указано в exec example)?

+0

Да, я сделал, но потом % classpath больше не работает. –

+0

@ Корнп Арф, извините, это было не мое понимание примера. Однако я не знаю, есть ли другой способ. Является ли настройка маршрута класса вручную параметром? –

+0

Да, это вариант, но есть много файлов jar. Таким образом, это будет утомительная работа. Спасибо за предложение. –

0

Хорошо,

Я приспособил плагин так, что аргументы командной строки могут быть полностью определены (в том числе параметра% CLASSPATH),

+0

Если вы хотите скопировать результат в ответ, вы, возможно, получите 3 голосов за значок самостоятельного ученика. – Martin

+0

Мартин, что вы имеете в виду, копируя результат в ответ? –

+0

@KornP, где ваш адаптированный плагин? – Gili

1

Хотя это выглядит менее элегантно, но переход на antrun плагин должны работать:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>runSomething</id> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <property name="runtime_classpath" refid="maven.runtime.classpath"/> 

        <java classname="org.drrabbit.maventest.App" 
          fork="true" 
          failonerror="true" 
          maxmemory="512m"> 

         <classpath> 
          <pathelement path="${project.build.directory}/some/extra/resources" /> 
          <pathelement path="${runtime_classpath}" /> 
         </classpath> 
        </java> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Однако, кажется, неплохо иметь дополнительные ресурсы, размещенные где-то вне проекта, как предлагал ваш оп. Вы должны либо подумать о том, чтобы включить это как часть проекта, либо сделать его банком, и развернуть в maven repo, чтобы вы могли использовать его как зависимость плагина.

5

У меня есть файлы конфигурации в определенном каталоге вне моей исходной папки. Поэтому я определил дополнительные ресурсы для моего файла pom.xml.

моя структура каталогов образца:

+ src 
+ conf 
    - app.properties 
    - log4j.xml 
- pom.xml 

мой pom.xml:

<build> 
    <resources> 
    <resource> 
     <directory>conf</directory> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
    </resource> 
    </resources> 

    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
     <executable>java</executable> 
     <mainClass>com.mycompany.MyMainClass</mainClass> 
     </configuration> 
    </plugin> 
    </plugins> 
<build> 

Теперь мы можем запустить программу:

mvn clean compile exec:java 
+2

У меня проблема с тем, чтобы это работало в случае, когда мой основной класс исходит из зависимости, а не от самого проекта. – kutschkem

+0

Большое спасибо! Это действительно помогает! – Yuanhang