2016-07-15 3 views
3

빌드 실패시 다음과 같은 결과가 발생합니까? 을 실행해야합니다. maven이 빌드를 실행하기 전에 클래스를 생성했습니다. 빌드 실패Maven 빌드를하기 전에 클래스를 실행하는 방법은 무엇입니까?

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.5.0</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>my.package.CustomClass</mainClass> 
      </configuration> 
     </plugin> 

결과 :

java.lang.ClassNotFoundException: my.package.CustomClass 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281) 
    at java.lang.Thread.run(Thread.java:745) 
+0

클린 빌드에서 실행하는 경우 해당 클래스의 컴파일 된 버전이 없으므로 실행할 수 없습니다. 아마 당신이 이것을하고 싶은 이유에 대해 조금 더 말한다면, 우리는 다른 것을 알아낼 수 있습니다. – dcsohl

+0

메인 클래스를 컴파일하기 전에 어떻게 실행시킬 수 있습니까? 어쩌면 실행을'process-classes' 단계에 바인딩하고 싶습니까? – Seelenvirtuose

+0

@Seelenvirtuose 외부 wsdl 서비스의 웹 서비스 인증을위한 일부 속성을 초기화하기 위해'generate-sources' 전에 실행하려면'public static void main' 클래스가 필요합니다. – membersound

답변

0

는 그냥 받는다는 클래스를 실행하는 플러그인이 때 그래서에서 사용할 수, 실행 ('테스트'또는 '설치'등) 위상을 변경 classpath. (실제로 다른 종속성으로 옮길 수없는 경우)

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.5.0</version> 
      <executions> 
       <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>my.package.CustomClass</mainClass> 
      </configuration> 
     </plugin> 
+1

OP는 "generate-sources"단계에서 실행이 필요하다고 설명했습니다. 또한 더 적합한 단계는 "프로세스 클래스"입니다. – Seelenvirtuose

관련 문제