2013-07-06 5 views
1

업데이트 : 어셈블리 플러그인을 사용하여 아티팩트, 폴더 또는 재배포 가능 zip 파일을 복사하여 해결할 수 있습니다. 메이븐을 모릅니다. 스윙 독립형 응용 프로그램 인 maven 프로젝트를 만들기 위해 STS/eclipse를 사용했습니다. 앱이 STS 내부에서 제대로 실행됩니다. Example helped. {러너 스크립트를 얻는 방법을 알아 냈습니다. 템플릿이 소스에 있습니다. maven은 단지 그것을 필터링하고 현재의 jar 이름을 넣는다. 이제 어셈블리 라이브러리에 내 응용 프로그램 jar를 두는 것을 멈추는 방법을 알아야합니다. (한 수준 위로 올려서 시작할 수 있고 80 개의 다른 jar 파일이 lib에 있습니다.)프로젝트 항아리 포장, 프로젝트 클래스 경로 생성, 목표

원래 질문 lib 폴더를 찾을 수 없습니다. 외관상으로는 app는 maven local repo의 로컬 항아리를 참조합니다.

maven에 dist/lib와 같은 프로젝트 아래의 일부 폴더에 복사하고 내 dist에 전체 응용 프로그램 jar를 만들도록 말할 수 있습니까? (dist가 다른 디렉토리 이름인지는 상관하지 않습니다. -> maven이 있으면> 기본값은 그 점에 신경 쓰지 않는다). 배포 할 수있는 항아리 세트가 필요합니다.

- : 내 프로젝트를 빌드 할 때

지금은

디렉토리 ./ 여기

내 치어 내 프로젝트 폴더 인

./target/classes에서 클래스를두고

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<modelVersion>4.0.0</modelVersion> 

<groupId>com.selenium</groupId> 

<artifactId>SA</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

<packaging>jar</packaging> 

<name>SA</name> 
<url>http://sel2in.com</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.apache.james</groupId> 
     <artifactId>apache-mime4j</artifactId> 
     <version>0.6.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.beanshell</groupId> 
     <artifactId>bsh</artifactId> 
     <version>1.3.0</version> 
    </dependency> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib-nodep</artifactId> 
     <version>2.1_3</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 

    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-exec</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.2</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-jxpath</groupId> 
     <artifactId>commons-jxpath</artifactId> 
     <version>1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.cssparser</groupId> 
     <artifactId>cssparser</artifactId> 
     <version>0.9.9</version> 
    </dependency> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>14.0-rc1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-core</artifactId> 
     <version>1.3.RC2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-library</artifactId> 
     <version>1.3.RC2</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.htmlunit</groupId> 
     <artifactId>htmlunit</artifactId> 
     <version>2.12</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.htmlunit</groupId> 
     <artifactId>htmlunit-core-js</artifactId> 
     <version>2.12</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpcore</artifactId> 
     <version>4.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpmime</artifactId> 
     <version>4.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.ini4j</groupId> 
     <artifactId>ini4j</artifactId> 
     <version>0.5.2</version> 
    </dependency> 
    <dependency> 
     <groupId>com.beust</groupId> 
     <artifactId>jcommander</artifactId> 
     <version>1.29</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty.aggregate</groupId> 
     <artifactId>jetty-websocket</artifactId> 
     <version>8.1.8.v20121106</version> 
    </dependency> 
    <dependency> 
     <groupId>net.java.dev.jna</groupId> 
     <artifactId>jna</artifactId> 
     <version>3.4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>net.java.dev.jna</groupId> 
     <artifactId>platform</artifactId> 
     <version>3.4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20080701</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.13</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.nekohtml</groupId> 
     <artifactId>nekohtml</artifactId> 
     <version>1.9.17</version> 
    </dependency> 
    <dependency> 
     <groupId>io.netty</groupId> 
     <artifactId>netty</artifactId> 
     <version>3.5.7.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>com.opera</groupId> 
     <artifactId>operadriver</artifactId> 
     <version>1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.github.detro.ghostdriver</groupId> 
     <artifactId>phantomjsdriver</artifactId> 
     <version>1.0.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.8</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.8</version> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-firefox-driver</artifactId> 
     <version>2.33.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml-schemas</artifactId> 
     <version>3.8</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-scratchpad</artifactId> 
     <version>3.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.protobuf</groupId> 
     <artifactId>protobuf-java</artifactId> 
     <version>2.4.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.w3c.css</groupId> 
     <artifactId>sac</artifactId> 
     <version>1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.33.0</version> 
    </dependency> 
    <dependency> 
     <groupId>xalan</groupId> 
     <artifactId>serializer</artifactId> 
     <version>2.7.1</version> 
    </dependency> 
    <dependency> 
     <groupId>stax</groupId> 
     <artifactId>stax-api</artifactId> 
     <version>1.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>xalan</groupId> 
     <artifactId>xalan</artifactId> 
     <version>2.7.1</version> 
    </dependency> 
    <dependency> 
     <groupId>xerces</groupId> 
     <artifactId>xercesImpl</artifactId> 
     <version>2.10.0</version> 
    </dependency> 
    <dependency> 
     <groupId>xml-apis</groupId> 
     <artifactId>xml-apis</artifactId> 
     <version>1.4.01</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.3.0</version> 
    </dependency> 


</dependencies> 


<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.14.1</version> 
      <configuration> 
       <skipTests>false</skipTests> 
       <failIfNoTests>false</failIfNoTests> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 

       <!-- put your configurations here --> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

않았다 안드레아스가 추가 그늘을 제안 pom으로합니다 : -

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <!-- put your configurations here --> 
       <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> 
       <resource>.txt</resource> 
       <resource>resources/</resource> 
      </transformer> 
      </transformers> 

      </configuration> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

IDE 빌드에서 : 다음

mvn package shade:shade 

을 줄 경우

망가 명령 줄에서 아무것도

를 참조하십시오 -

[INFO] Including org.seleniumhq.selenium:selenium-safari-driver:jar:2.33.0 in the shaded jar. 
[INFO] Including org.seleniumhq.selenium:selenium-support:jar:2.33.0 in the shaded jar. 
[INFO] Including org.webbitserver:webbit:jar:0.4.14 in the shaded jar. 
[INFO] Including xalan:serializer:jar:2.7.1 in the shaded jar. 
[INFO] Including stax:stax-api:jar:1.0.1 in the shaded jar. 
[INFO] Including xalan:xalan:jar:2.7.1 in the shaded jar. 
[INFO] Including xerces:xercesImpl:jar:2.10.0 in the shaded jar. 
[INFO] Including xml-apis:xml-apis:jar:1.4.01 in the shaded jar. 
[INFO] Including org.apache.xmlbeans:xmlbeans:jar:2.3.0 in the shaded jar. 
[DEBUG] Processing JAR /Users/manoj/Downloads/SA/target/SA-0.0.1-SNAPSHOT.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 9.873s 
[INFO] Finished at: Sat Jul 06 22:08:17 GMT+05:30 2013 
[INFO] Final Memory: 20M/81M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default-cli) on project SA: Error creating shaded jar: Invalid signature file digest for Manifest main attributes -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default-cli) on project SA: Error creating shaded jar: Invalid signature file digest for Manifest main attributes 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: Invalid signature file digest for Manifest main attributes 
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:528) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:221) 
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176) 
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:288) 
    at java.util.jar.JarVerifier.update(JarVerifier.java:199) 
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:323) 
    at java.util.jar.JarFile.getInputStream(JarFile.java:388) 
    at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:146) 
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458) 
    ... 21 more 
[ERROR] 
[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 

(John Ament가 제안한) 여기에 설명 된대로 maven-assembly-example/releases 또는 zip

큰 항아리에는 큰 타르와 지퍼가 있습니다. 대부분의 작업이 완료되었습니다. 지금은 그냥 압축을 풀고 당신의 플러그인 섹션이 추가 내가

project-home 
    -> dist 
    --> MyApp.jar 
    --> lib 
    ---> other1.jar 
    ---> other2.jar 
    --> conf 
    ---> myResources1.jpg 
    ---> otherFiles2.xyz 
+0

그늘과 같이 보이는 것이 하나의 방법입니다. 거기에 다른 lib 디렉토리를 별도의 디렉토리에 덤프, app.jar 및 sh 또는 텍스트 파일을 모두 포함하도록 클래스 경로와 함께? 현재 오류처럼 보이는데 거기에/META-INF에 LICENSE라는 파일이 있고 maven이 같은 이름의 디렉토리를 만들고 싶습니다. – tgkprog

답변

2

음영은 좋은 해결책이지만 JAR에서 종속성을 원하지 않을 수도 있습니다. 또한 어셈블리 플러그인을 사용하여 아티팩트, 폴더 또는 재배포 가능 Zip 파일을 만들 수 있습니다.

+1

안녕히 주무세요. 다음은 빠른 조립 소개입니다. http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html 어셈블리 내용은 바깥에 남아 있습니다. –

+0

그게 한숨 것 같습니다. 지금 그것을 알아 내기 위해! 나는 최종 애플 리케이션 항아리로 뭔가를 만들고 lib 폴더에 모든 종속성의 바이너리를 포함하도록 말해야 할 것 같아요? 그런 다음 클래스 패스를 만들고 스크립트를 실행하여 – tgkprog

+0

을보고 https://github.com/rfkrocktk/maven-assembly-example/releases – tgkprog

2

shaded jar (UberJar)을 작성 그래서 스크립트를 만들 필요가 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <!-- put your configurations here --> 
    </configuration> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
메이븐 모든을 포함 항아리에 생성됩니다

소스 및 모든 종속 항목의 클래스

+0

시도해 주셔서 감사합니다 – tgkprog

+0

+1 빠른 답변을 부탁드립니다. STS 프로젝트에서 깨끗하게 지어 만들 때 새로운 것은 만들어지지 않았습니다. 커맨드 라인으로 갔지만 다른 오류가있었습니다. 포장하기 위해 이전에해야 할 일이 있습니까? – tgkprog

+0

새로운 문제에 대한 질문보기 – tgkprog