2013-02-23 1 views
2

나는 자바 웹 서비스를 읽을 때 SOAP 기반 웹 서비스를 사용하기 위해 간단한 javafx 응용 프로그램을 빌드하려합니다. book (질문은 Java 웹 서비스에 관한 것이 아닙니다) 사용 :maven으로 빌드되지 않은 jar에서 클래스를 maven 종속으로 제외하는 방법은 무엇입니까?

<groupId>org.tarrsalah</groupId> 
    <artifactId>teams-client</artifactId> 
    <version>0.0.99</version> 
    <packaging>jar</packaging> 

    <name>teams-client</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <netbeans.hint.license>apache20</netbeans.hint.license> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
     <scope>compile</scope> 
    </dependency 
    > 
    <dependency>  
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.8</version> 
    </dependency> 

    <dependency> 
     <groupId>com.panemenu</groupId> 
     <artifactId>tiwulfx</artifactId> 
     <scope>compile</scope> 
     <version>1.1</version> 
     <type>jar</type>  
    </dependency> 

    <dependency> 
     <groupId>commons-beanutils</groupId> 
     <artifactId>commons-beanutils</artifactId> 
     <scope>compile</scope> 
     <version>1.8.3</version> 
    </dependency> 
    </dependencies>  

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.jvnet.jax-ws-commons</groupId> 
     <artifactId>jaxws-maven-plugin</artifactId> 
     <version>2.2</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>wsimport</goal> 
      </goals> 
      <phase>generate-sources</phase> 
      </execution> 
     </executions> 
     <configuration>   
      <wsdlUrls> 
      <wsdlUrl>http://localhost:8080/teams?wsdl</wsdlUrl> 
      </wsdlUrls> 
      <packageName>org.tarrsalah.teams.client.generated</packageName>   > 
     </configuration> 
     </plugin>    

     <plugin> 
     <groupId>com.zenjava</groupId> 
     <artifactId>javafx-maven-plugin</artifactId> 
     <version> 1.5 </version> 
     <configuration>   
      <mainClass>org.tarrsalah.teams.client.app.App</mainClass> 
      <jarFileName>teams-client.jar</jarFileName> 
      <vendor>tarrsalah</vendor>               
     </configuration>          
     </plugin> 
    </plugins> 
    </build> 
</project> 
: 을 - POJO를

여기

POM은 파일과 상호 작용하는 tiwulfx 1.1 - (내가 maven 3.0.4을 사용하고 있습니다) 종속성을 관리하기위한 javafx-maven-plugin 1.5-7.3 을 넷빈즈

tiwulfx jar 파일을 다운로드하고 POM 파일에 모든 종속성을 추가하고 maven 로컬 리포지토리 (netbeans/ant 단순 빌드를 사용하고 jar 파일 만 제공하는 프로젝트)에 설치했습니다.

내가 실행할 때, 독립적 인 실행 가능한 단지를 구축하기 위해 노력하고있어 : MVN 깨끗한 컴파일 JFX를 : 빌드 단지

을 나는이 빌드 오류 메시지가 얻을 :

[INFO] Java home is: /home/tarrsalah/local/jdk1.7.0_15/jre 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 14.445s 
[INFO] Finished at: Sat Feb 23 23:39:31 CET 2013 
[INFO] Final Memory: 21M/350M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal com.zenjava:javafx-maven-plugin:1.5:build-jar (default-cli) on project teams-client: Invocation of JavaFX method 'packageAsJar' failed with an error. It's possible this plugin is not compatible with the version of JavaFX you are using. InvocationTargetException: Error: Failed to create jar file teams-client-0.0.99-jfx.jar: duplicate entry: com/javafx/main/Main.class -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

이 보인다을 javafx 클래스가 이미 tiwulfx jar 파일에 포함되어 있고 패키지 단계에서 javafx-maven-plugin으로 가져온 JDK의 javafx 클래스와 충돌합니다 (필자는 1.7u15를 사용하고 있습니다).

이 나무 종속성이 같은 모습입니다 :

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building teams-client 0.0.99 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ teams-client --- 
[INFO] org.tarrsalah:teams-client:jar:0.0.99 
[INFO] +- junit:junit:jar:3.8.1:test 
[INFO] +- commons-logging:commons-logging:jar:1.1.1:compile 
[INFO] +- org.apache.poi:poi:jar:3.8:compile 
[INFO] | \- commons-codec:commons-codec:jar:1.5:compile 
[INFO] +- com.panemenu:tiwulfx:jar:1.1:compile 
[INFO] \- commons-beanutils:commons-beanutils:jar:1.8.3:compile 
[INFO] \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for duplicate) 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.137s 
[INFO] Finished at: Sun Feb 24 00:21:34 CET 2013 
[INFO] Final Memory: 10M/163M 
[INFO] ------------------------------------------------------------------------ 

내 질문이입니다 : 어떻게 포장 단계에서 tiwulfx에서 자바 FX 클래스 (패키지)를 제외 할 수 있습니까? 내가 maven 생태계에 익숙하지 않기 때문에 사소한 질문이 될 수 있습니다.

P.S : 작동 후에 생성 된 jar 파일은 아무런 문제없이 작동합니다. 저는 완벽한 빌드 결과를 얻으려고합니다. 당신이 (가 메이븐에 의해 만들어 아니에요 그리고 그것은 어디서든 메이븐의 repo에서 호스팅 아니에요) 손으로 당신의 메이븐의 repo에 tiwulfx 단지를 추가해야하기 때문에

답변

3

, 당신은뿐만 아니라 단지 첫 손으로 재 포장 할 수도 있습니다. 지퍼 편집기에서 항아리를 열고 com/javafx 폴더를 삭제하면됩니다. 그런 다음 평소 install:install-file 목표를 실행합니다.

jar 파일의 버전 번호를 선택할 때 여분의 문자열을 추가하여 원래 웹 사이트의 것과 약간 다른 jar 파일을 삭제하는 것이 좋습니다.

+0

고마워요 @artbristol, 우리가이 바보 같은 해킹 빌드에서 제거 할 수있는 희망을 다음 javafx 8 : – tarrsalah

+1

또한 panemu에게 연락하여 배포 가능한 jar 파일에 javafx 코드를 배치하지 않도록 요청할 수 있습니다. 처음에는 그곳에있을 이유가 없습니다. – jewelsea

2

이제 TiwulFX는 Maven에서 사용할 수 있습니다.

<dependency> 
    <groupId>com.panemu</groupId> 
    <artifactId>tiwulfx</artifactId> 
    <version>1.1</version> 
</dependency> 

감사합니다.

관련 문제