2009-07-09 12 views
5

지금까지 우리 회사에서 Ant를 사용했습니다. 응용 프로그램을 클라이언트에 보내려 할 때마다 우리는 모든 jar 라이브러리와 Ant 자체 및 모든 배치 코드를 간단한 배치 파일과 함께 패키지화 한 특수 Ant 스크립트를 실행합니다.Maven으로 자체 포함 된 소스 릴리스 만들기

그런 다음 클라이언트는 네트워크 액세스가없는 컴퓨터 (Ant도 아님)에 파일을 저장하고 배치 파일을 실행할 수 있습니다. 컴퓨터에 유효한 JDK가있는 한 배치 스크립트는 jar를 사용하여 모든 코드를 컴파일하고 최종적으로 응용 프로그램 서버의 클라이언트가 배포하는 WAR/EAR을 작성합니다.

최근에 우리는 메이븐 2로 마이그레이션했습니다.하지만 같은 일을 할 수있는 방법을 찾지 못했습니다. 나는 Maven 어셈블리 플러그인을 보았지만 소스 배포본이나 바이너리를 생성한다. 우리의 시나리오는 소스 코드가 포함되어 있기 때문에 사실 믹스이지만 우리가 사용하는 라이브러리의 바이너리 항아리 (예 : Spring, Hibernate)

따라서 Maven을 사용하여 자체 포함 된 어셈블리/릴리스/패키지를 만들 수 있습니다 전혀 네트워크 액세스가없는 컴퓨터에서 실행 ??? 즉, 모든 라이브러리가 내부에 포함되어야합니다.

Maven 자체가 내부에 포함되어있는 경우 추가 보너스이지만 이것이 엄격한 요구 사항은 아닙니다. 최종 패키지는 시스템 관리자가 쉽게 수행 할 수있는 하나의 명령으로 쉽게 컴파일해야합니다.

나는 이것에 대한 내 자신의 메이븐 플러그인을 쓰려고 생각하고 있었지만 누군가가 이미이 문제를 겪었다 고 생각합니다.

답변

1

:

  • 사용 MVN 개미 : 받는다는 프로젝트
  • 확인 개미를 확인에서 개미 빌드 스크립트를 만들 수 개미는 프로젝트 의존성
  • 를 구축하기 위해 어셈블리를 사용하는 것입니다 개미
    시스템

또는 플랜 B :

  • 사용 MVN 개미 : 개미 스크립트 받는다는 프로젝트
  • 확인 개미를 확인에서 개미 빌드를 만드는 것은
  • 는 "부트 스트랩 클래스"개미를 호출하고 빌드를 실행하는 쓰기 프로젝트 종속성에게 있습니다
  • 사용 appassembler 플랜 B에서 환경

스크립트 빌드를 구축하고 설치하려면 패키지 소스 항아리에서 소스 트리 곳을 설정 한 다음 호출 할 appassembler 빌드 박쥐 또는 SH 스크립트를 사용하여 스크립트를 작성할 것 부트 스트랩과 개미를 통해 빌드. 부트 스트랩은 빌드 전후에 필요한 모든 작업을 수행 할 수 있습니다.

희망이 도움이됩니다. 이것은 내가 치어의 빌드 부분에 ... 그것을 어떻게

+0

니스! 나는 개미에 대해 몰랐다 : 개미 – kazanaki

0

아마도 비슷한 질문으로 제출 한 답변이 도움이 될 수 있습니다. Can maven collect all the dependant jars for a project to help with application deployment? 참조 어셈블리에서 소스 코드를 포함시키는 방법 중 하나가 누락되었습니다. 나는 어셈블리 플러그인으로 그것을 관리 할 수있는 방법이 있다고 상상해보아야한다. 이것은 배포판에 Maven을 포함시키는 것에 대해서도 다루지 않습니다.

개미에서 메이븐으로 이동하는 이유는 무엇입니까? 앤트 솔루션으로 모든 것이 잘 풀린 것처럼 들리므로 Maven이 당신을 여기에서 사나요?

종속성 관리 인 경우 techniques for leveraging Maven from Ant을 사용하면 두 가지 장점을 모두 누릴 수 있습니다.

+0

Ant 스크립트가 너무 복잡해지고 어떤 시점에서 하드 코딩 된 경로가있어 빌드 서버가 아닌 다른 시스템에서 실행할 수 없기 때문에 Ant에서 Maven으로 이동했습니다. 이제 프로젝트에서 어떤 라이브러리 (및 라이센스)가 사용되는지 더 쉽게 알 수 있습니다. – kazanaki

0

소스 플러그인은 "source : jar"문제의 소스가 들어있는 jar 파일을 제공합니다. 그런 다음 어셈블리 플러그인을 사용하여 내부 프로젝트의 소스 jar (이러한 소스 jar를 참조하는 소스 사용)와 외부 프로젝트의 바이너리 jar를 하나의 배포본으로 결합 할 수 있습니다.

그러나 이것을 컴파일 가능한 단위로 바꾸려면 제안 사항이 없습니다. 확실히 maven을 번들링 할 수 있지만 프로젝트를 빌드하는 데 필요한 모든 플러그인을 포함하는 번들을 만들어야합니다! 나는 그것을하기위한 기존의 도구를 모른다.

당신은이 방법을 시도 할 수
+0

하! 그렇습니다. 까다로운 부분입니다. 편집 가능한 유닛을 얻는 방법! – kazanaki

0

이에 추가

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>attach-sources</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

그리고 프로파일 섹션에이 비트를 추가

<profiles> 
     <profile> 
      <id>release</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-source-plugin</artifactId> 
         <executions> 
          <execution> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 

그리고 maven을 설치하면 jar 파일을 빌드하고 소스 파일 jar 파일을 검사합니다. dev에 환경에서

+0

그게 어떻게 도움이 되니? 클라이언트는 jar 파일에 소스를 원하지 않습니다. 그들은 단일 명령으로 소스를 스스로 컴파일하려고합니다. – kazanaki

2

, 당신은 빌드에서 다음과 같은 플러그인

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
</plugin> 

및 호출 MVN 어셈블리를 포함하는 경우 : 조립, 당신은 yourApp-버전과-dependencies.jar 대상 폴더를 얻을 것입니다. 이것은 자급 자족의 항아리이며 Main-class MANIFEST.MF 항목으로 누구나 두 번 클릭하여 응용 프로그램을 실행할 수 있습니다.

+0

어셈블리 플러그인을 이미 보았습니다. 여기서 문제는 클라이언트가 소스 코드를 직접 컴파일하려고한다는 것입니다. 그들은 미리 컴파일 된 항아리를 원하지 않습니다. 그러나 어쨌든 고마워. – kazanaki

관련 문제