2016-07-26 2 views
2

컴파일 된 파일을 다른 컴퓨터로 전송 한 다음 거기에서 실행할 수 있도록 컴파일해야하는 Maven 프로젝트가 있습니다. 자바 버전). 나는이 SO questionMaven 기반 Java 프로젝트를 컴파일하여 명령 행에서 실행하는 방법

쳐다 보면서 실행 할 수 있었다 :

mvn clean install 
mvn dependency:copy-dependencies 

아직 때 나는 시도 :

Error: Could not find or load main class myApp 

내 pom.xml 파일하지 않는

cd target/ 
java -cp myApp-0.0.1.jar:dependency myApp 

내가

있어 mvn-assembly-plugin 또는 maven-jar-plugin을 가지고 있습니다. (그리고 성공적으로 .jar를 얻습니다. 대상/mvn 새로 설치 후).

내가 필요한 것은 java -jar 또는 mvn없이 실행되고 다른 컴퓨터에서 이식되고 실행될 수있는 무언가를 생성하기 때문에 이러한 단계가 내 목표와 관련이 있는지 여부가 확실하지 않습니다.

답변

3

JAR에 모든 의존성을 묶어주는 Maven 빌드 플러그인이 있습니다.

java -jar mybundled.jar 

으로 간단히 실행할 수 있습니다. 클래스 경로 종속성은 신경 쓰지 않아도됩니다.

여기에 Maven 플러그인이 제공됩니다. 진입 점과 함께 MainClass을 교체하십시오. 그것이 package lifecycle에 바인딩으로

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4.1</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs>  
     <archive> 
     <manifest> 
      <mainClass>com.yourdomain.Main</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
    </executions> 
</plugin> 

, 당신은 일을 한 후 대상 디렉토리에 번들 JAR을 찾을 것입니다 ...

mvn package 

을 코드가 다른 실행되지 않습니다 우려에 대해서 기계, Java는 플랫폼에 독립적이며 일반적으로에 의존 할 수 있습니다. 그러나 인생을 힘들게 만들 수있는 세 가지가 내 마음에옵니다.

  1. 코드는 시스템 인코딩에 따라 다릅니다. 메이븐 (Maven)은 로그에 명시 적으로 지정하라는 경고 메시지를 사용자에게 보냅니다.
  2. 시스템 명령을 실행하는 것처럼 런타임과 상호 작용합니다. ps은 Windows에서는 작동하지 않으며 dir /s은 * nix에서는 작동하지 않습니다.
  3. Java 환경의 버전이 다릅니다. 물론 JavaFX 코드는 Java 1.5에서 실행되지 않습니다. 최신 기능을 사용하는 경우 클라이언트가 이미 해당 버전을 보유하고 있거나 적어도 어딘가에서 가져올 수 있는지 확인하십시오. 당신은 역시 sourcetarget 컴파일 옵션을 살펴보고 할 수 있습니다 : 나는 SRC '에있는 일부 설정 파일을 사용하고 있기 때문에 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#crosscomp-example
+1

좋아을,이 일 모두, 아직/주/config', 내가 필요 'java -jar target/mybundled.jar' 방식으로 맨 위 폴더에서 jar를 실행하십시오. 다른 컴퓨터로 이식하는 방법을 보게 될 것입니다. (내 관심사는 내 Java가 다르면 .jar가 제대로 실행되지 않을 수도 있습니다. 실제로 다른 컴퓨터에서 실행할 수 있습니까?) 그리고 대답으로 받아 들일 것입니다. – alisa

+0

기꺼이 도와 드리겠습니다. 크로스 플랫폼 관련 문제에 관한 게시물에 내 의견을 추가했습니다. – Matt

+0

니스 추가. 세 번째 항목은 내가 가장 염려했던 것을 전달합니다. 필자의 특별한 경우에는 원격 호스트에서'java --version'을 점검 했으므로 1.8 (오늘) (2016 년 7 월) 현재 문제가 없습니다. 그러나이 링크와이 문제를 전반적으로 다루는 방법을 지적 해 주셔서 감사합니다. – alisa

관련 문제