복붙노트

[SPRING] 하나의 Spring 부트 프로젝트, JAR 또는 WAR 모두에 배포

SPRING

하나의 Spring 부트 프로젝트, JAR 또는 WAR 모두에 배포

단일 Spring 부트 프로젝트를 pom.xml이나 애플리케이션 소스를 변경하지 않고 JAR과 WAR 모두에 패키지 할 수있는 방법이 있습니까?

스프링 부트 JAR 애플리케이션을 WAR로 변환하는 것을 읽었지만 프로젝트를 WAR로 변환하고 JAR로 패키징 할 수있는 능력을 잃어 버렸다.

나는 mvn 패키지가 둘 다 할 것으로 기대하지 않는다. 내가 원하는 것은 mvn i-want-a-jar와 같은 것으로, 프로젝트를 JAR로 패키징합니다. 또는 mvn i-want-a-war를 실행할 수 있으며 프로젝트를 WAR로 패키지화합니다.

이것이 가능한가?

해결법

  1. ==============================

    1.실행 가능한 WAR 파일의 문제점은 무엇입니까? 당신이 정말로 필요로하는 것이 아닌가요?

    실행 가능한 WAR 파일의 문제점은 무엇입니까? 당신이 정말로 필요로하는 것이 아닌가요?

    추신 처럼 java -jar name.war

  2. ==============================

    2.나는 그것을 추가함으로써 그것을 할 수 있었다.

    나는 그것을 추가함으로써 그것을 할 수 있었다.

    <packaging>${packaging.type}</packaging>
    

    POM 파일에 추가 한 다음 JAR 및 WAR에 대해 다른 프로필을 설정하십시오.

      <profiles>
        <profile>
          <id>jar</id>
          <properties>
            <packaging.type>jar</packaging.type>
          </properties>
        </profile>
        <profile>
          <id>war</id>
          <properties>
            <packaging.type>war</packaging.type>
          </properties>
          <dependencies>
            <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
              <scope>provided</scope>
            </dependency>
          </dependencies>
        </profile>
      </profiles>
    

    이제 mvn 패키지 -P war는 WAR 및 mvn 패키지를 생성합니다. -P jar는 JAR을 생성합니다.

    또 다른 옵션은 JAR과 WAR에 대해 별도의 모듈을 만드는 것이지만, 그 경로를 선택하지는 않았습니다.

  3. ==============================

    3.우리는 최근에 비슷한 요구 사항을 가지고 있습니다. 원래 Spring Jar로 패키지 된 기존의 Spring Boot 프로젝트는 Tomcat 및 WildFly 배포를 지원해야했습니다.

    우리는 최근에 비슷한 요구 사항을 가지고 있습니다. 원래 Spring Jar로 패키지 된 기존의 Spring Boot 프로젝트는 Tomcat 및 WildFly 배포를 지원해야했습니다.

    이 프로젝트에서 사용 된 일부 종속성 (예 : WebJars) 때문에 WAR 패키지로의 간단한 전환은 WildFly (VFS 지원)에는 필요하지만 다른 배포에는 필요하지 않기 때문에 옵션이 아닙니다.

    해결책은 코어 모듈이 실제 프로젝트를 포함하지만 스프링 부트의 플러그인을 적용하지 않고 프로젝트 모듈을 재구성하는 것이었고 몇몇 패키지 모듈은 코어 모듈에 의존하고 배포 아티팩트 구체화를 구성했습니다 (부트 및 기타 플러그인, 배치 특정 종속성 등). ).

    그런 식으로 프로젝트 빌드는 단일 빌드 실행에서 여러 배포 아티팩트 (Boot의 실행 가능 JAR, 전통적인 WAR 및 WildFly 특정 WAR)를 생성 할 수있었습니다.

    누구나이 방법이 유용하다고 생각하면 Github에서 접근법을 시연하는 샘플 프로젝트를 사용할 수 있습니다. 프로젝트는 Gradle 또는 Maven으로 만들 수 있습니다.

  4. from https://stackoverflow.com/questions/23868580/one-spring-boot-project-deploy-to-both-jar-or-war by cc-by-sa and MIT license