2014-01-20 14 views
0

我想運行一個java類,它填充我的數據庫與虛擬數據。在日食中,我只需通過右鍵單擊並作爲java程序運行即可。問題是我想讓詹金斯做到這一點...顯而易見的解決方案是使用maven運行一個類,因爲它會將所有需要的東西放在類路徑中。從maven運行java類如果指定參數

我已經試過http://mojo.codehaus.org/exec-maven-plugin/這樣的:

<profile> 
    <id>populatedb</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
      <property> 
       <name>populatedb</name> 
      </property> 
     </activation> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <executions> 
        <execution> 
         <phase>install</phase> 
         <goals> 
          <goal>java</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <mainClass>com.example.DatasetReader</mainClass> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

但它給了我ClassNotFound on com.example.DatasetReader項目甚至建造之前。我使用這個命令:

mvn clean install exec:java -Dpopulatedb -Dclasspath -Dexec.mainClass="com.example.DatasetReader" 

我認爲這都與執行階段的東西......但有沒有像安裝後...

謝謝!

+0

是'DatasetReader'任何機會「測試」類(即它是在'的src /測試/ java')? – DB5

+0

您能否添加您的錯誤日誌? – DB5

+0

另外,你的命令會(當成功的時候)導致exec-maven-plugin運行兩次。一次是因爲你已經激活了配置文件,一次是因爲你明確地調用了'exec:java'目標。調用'mvn clean install -Dpopulatedb'應該足以讓exec-maven-plugin按照配置文件中的配置運行。 – DB5

回答

1

嘗試沒有附加的階段:

mvn exec:java -Dexec.mainClass="com.example.DatasetReader" 

或運行時添加類路徑範圍:

mvn exec:java -Dexec.mainClass="com.example.DatasetReader" -Dexec.classpathScope=runtime 
+0

同樣的事情發生。 – kboom

+0

你有沒有有效的罐子? – user987339

2

我認爲這個問題是與用於由exec-Maven的插件類路徑做。默認情況下,exec-maven-plugin使用runtime類路徑。我假設你的DatasetReader類是一個測試類,所以只能在test類路徑中使用。

要將不同的類路徑傳遞給exec-maven-plugin,請使用classpathScope property

所以你可以在你的pom中使用<classpathScope>test</classpathScope>讓插件和測試類路徑一起運行。

所以您只需將需要修改POM以如下:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
     <execution> 
      <phase>install</phase> 
      <goals> 
       <goal>java</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <classpathScope>test</classpathScope> <!-- this is the extra config --> 
     <mainClass>com.example.DatasetReader</mainClass> 
    </configuration> 
</plugin> 
+0

DatasetReader位於src/main/java中。它不涉及與測試有關的任何事情。但是這對於那些在那裏的人來說肯定會有用!謝謝:) – kboom

+0

我會通過建議你把''放在''裏面來進一步改進。 – carlspring