2014-01-20 6 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' 아래) :

그래서 당신은 간단하게 다음과 같이 할 수 있도록 POM을 수정해야? – DB5

+0

오류 로그를 추가 하시겠습니까? – DB5

+0

aside 명령으로 exec-maven-plugin이 두 번 실행됩니다. 왜냐하면 프로필을 활성화했기 때문이며, 한 번 명시 적으로'exec : java' 목표를 호출했기 때문입니다. 'mvn clean install -Dpopulatedb'는 exec-maven-plugin을 pom의 프로필에 설정된대로 실행시키기에 충분해야합니다. – 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-plugin은 runtime 클래스 경로를 사용합니다. 귀하의 DatasetReader 클래스는 테스트 클래스이므로 test 클래스 경로에서만 사용할 수 있습니다.

exec-maven-plugin에 다른 클래스 경로를 전달하려면 classpathScope property을 사용하십시오.

이렇게하면 pom에 <classpathScope>test</classpathScope>을 사용하여 테스트 클래스 경로로 플러그인을 실행하게 할 수 있습니다.

<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

관련 문제