2013-01-02 1 views
7

내가 메이븐 새로운 오전 제발 도와주세요 프로젝트 디렉토리 외부 출력을 생성합니다. Maven 프로젝트 폴더와 다른 디렉토리에 대상 폴더를 생성하려고합니다. 내 요구 사항에 따라 생성 된 war 파일은 내 maven 프로젝트를 빌드 할 때 C : \ naresh 폴더와 같은 다른 폴더에 배치해야합니다. 여기구성 Maven은

내 코드 :

<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"> 
    <packaging>war</packaging> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>project</artifactId> 
    <version>1.0</version> 

    <build> 
    <directory>${project.basedir}/target</directory> 
    <outputDirectory>C:\Software\${project.basedir}/target</outputDirectory> 

    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <warSourceDirectory>WebContent</warSourceDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 

    </build> 
</project> 
+1

문제는 당신이 필요로하는 않는 이유는 다른 레이아웃을 데에 장착 된 배포 폴더를 사용하고? – khmarbaise

+0

@khmarbaise, 때로는 현지에서 개발 및 테스트를 신속하게 진행하기 위해 이러한 종류의 조치를 취했습니다. 하지만 이러한 구성은 실제로 PROD 또는 UAT 환경에 게시되지 않습니다. – Jaikrat

+0

이러한 종류의 구성으로도 성능이 향상되지 않습니다. 정확히 반대의 원인이 모든 CI solutoin 등에서 실패합니다 – khmarbaise

답변

10

@khmarbaise가 정확합니다. 가능하면 컨벤션을 따르는 것이 더 낫습니다. 그렇지 않으면 다른 빌드 도구를 사용하거나 전체적인 방법으로 끝내야합니다. 그것은 당신이 당신의 목표를 달성하기 위해 다음과 같은 작업을 수행 할 수 말했다

<build> 
    <outputDirectory>${user.home}/${project.artifactId}/target</outputDirectory> 
    ... 
</build> 

이 루트 디렉토리와 user.home 시스템 등록 정보를 사용하고 <artifactId/> ('프로젝트')의 이름을 딴 폴더에 출력 디렉토리를 생성합니다. Java 시스템 properties은 모두 pom에서 사용할 수 있습니다. 이것을 다른 곳에 만들 필요가 있다면 위의 디렉토리에 상대적으로 만들 수 있습니다. 대신

사용 받는다는 전쟁 - 플러그인 :

귀하의 질문에, 나는 당신이 output directory에 대한 구성을 수정하는 것이 좋습니다 당신은 정말 그냥 다른 디렉토리에 이슈 (war 파일) 출력이 필요하다는 것을 나타 내기 때문에 메이븐 - 전쟁 - 플러그인. 예를 들면 :

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0</version> 
     <configuration> 
      <outputDirectory>${user.home}/${project.artifactId}</outputDirectory> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
허용 대답과 매우 유사한
+0

고마워요 선생님이 방법으로 시도합니다 .. – Naresh

0

, 나는 고정 표시기

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <outputDirectory>${project.build.directory}/deployments</outputDirectory> 
      </configuration> 
     </plugin> 
    </plugins>