Maven : 프로젝트의 war 파일 이름을 바꾸는 방법은 무엇입니까?


91

bird다음 구성 요소 가 포함 된 프로젝트 가 있습니다.pom.xml

   <groupId>com.myorg</groupId>
    <artifactId>bird</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>bird</name>

    <modules>
        <module>persistence</module>
        <module>business</module>
        <module>service</module>
        <module>web</module>
    </modules>

웹 모듈은

   <parent>
        <artifactId>bird</artifactId>
        <groupId>com.myorg</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>web</artifactId>
    <packaging>war</packaging>  

웹 모듈은 web-1.0-SNAPSHOT.war
maven을 사용하여 How can I 이라는 war 파일을 생성합니다 bird.war.


답변:


207

전쟁을 생성하는 웹 모듈에서 다음을 사용할 수 있습니다.

<build>
  <finalName>bird</finalName>
 . . .
</build>

이로 인해 "war : war"목표가 사용될 때 bird.war라는 파일이 생성됩니다.


"bird.war"라는 이름으로 프로젝트를 컴파일하면 "bird.war.war"라는 이름의 전쟁이 발생합니다.
Kalaschni

@Kalaschni는 'bird.war'이 아닌 'bird'를 사용합니다. 다양한 빌드 플러그인은 각각 적절한 파일 확장자를 자동으로 추가합니다 (war, jar, ear)
ZachOfAllTrades

11
또는 더 일반적으로 다음을 사용할 수 있습니다.<finalName>${project.artifactId}</finalName>
Guillaume Husta 2014-10-23

이 답변은 내가 원하지 않는 부모의 이름으로 서브 모듈의 전쟁이 생성되는 문제를 해결했습니다. 문제는 <finalName> 요소가 상위 POM에 설정되어 있다는 것입니다. 해당 요소를 삭제하면 하위 모듈의 올바른 이름으로 생성 된 war 파일이 생성됩니다.
Oliver Hernandez

IDEA 20156 2.4에서는 Payara Glassfish 4.1에 배포하려고 할 때마다 이전 전쟁 파일을 계속 생성한다는 추가 문제가있었습니다. 이 경우 모듈 설정 열기-> 아티팩트-> 출력 레이아웃으로 이동하여 원하는 결과로 war 파일의 이름을 변경하십시오. 컨텍스트 루트가 IDEA의 war 파일 이름으로 변경되기 때문에 필요했습니다. .properties 파일에 다른 구성이있을 때 고통입니다.
Dr4gon

26

war 플러그인을 구성해야합니다.

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <warName>bird.war</warName>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

여기에 더 많은 정보


11
참고 :이 답변은 더 이상 유효하지 않습니다 (maven-war-plugin 버전 3.0.0 이상부터). issues.apache.org/jira/browse/MWAR-373을 참조하십시오 .
Auke

<warName>은 작동하지만 (적어도 3.2.3의 war-plugin에서는) 항상 "-<classifier> .war"을 추가합니다. 여기서 <classifier>는 기본적으로 비어 있으며 <configuration> 내부에서 설정할 수 있습니다. <warName> $ {project.build.finalName} ## $ {buildDateTimeFile} </ warName>을 build-helper-maven-plugin에 의해 설정된 "buildDateTimeFile"과 함께 사용하여 "myApp ## 2020-05-29_10-24- 00.war ". 이것은 한 번에 여러 개의 war 파일 (dev / test / prod)을 만드는 경우 특히 유용합니다.
Thies

6

maven 프로젝트를 사용하는 경우 아래 단계에 따라 .war 파일 이름을 수정할 수 있습니다.

maven 프로젝트의 pom.xml 파일을 열고 태그로 이동하십시오 <build></build>.

  1. 이 태그 사이에 원하는 이름을 지정하십시오. <finalName></finalName> .

    전의. :<finalName>krutik</finalName>

    이 .war을 배포 한 후 http : // localhost : 8080 / krutik / 을 사용하여 URL에 액세스 할 수 있습니다.

  2. 슬래시 '/'로 URL에 액세스하려면 로 다음과 같이 이름을 지정해야합니다.

    예 : <finalName>krutik#maheta</finalName>

    이 .war을 배포 한 후 http : // localhost : 8080 / krutik / maheta 를 사용하여 URL에 액세스 할 수 있습니다.


5

pom.xml> 프로젝트 태그> 빌드 태그를 조회합니다.

아래 해결책을 원합니다.

<artifactId>bird</artifactId>
<name>bird</name>

<build>
    ...
    <finalName>${project.artifactId}</finalName>
  OR
    <finalName>${project.name}</finalName>
    ...
</build>

나를 위해 일했습니다. ^^

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.