source

스프링 부트 제어 대상 JAR 파일 이름

manycodes 2023. 4. 1. 09:38
반응형

스프링 부트 제어 대상 JAR 파일 이름

My Spring Boot 프로젝트에는 다음과 같은 빌드 설명이 있습니다.

<build>

    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.app.MainClass</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

    </plugins>
</build>

JAR 파일명은app-1.0-SNAPSHOT.jar한 지점에서1.0-RELEASE.jarJenkins에 의해 제어되는 또 다른 버전에서는 (일종의 mvn 설정 또는 -D와 같은 JVM 인수를 사용하여)

이거 해도 돼요?

아주 간단해, 한 지점에pom.xml와 함께

<build>
  <finalName>app-1.0-SNAPSHOT</finalName>
</build>


다른 브랜치에서는pom.xml와 함께

<build>
  <finalName>1.0-RELEASE</finalName>
</build>

다음과 같이 프로젝트의 버전을 빌드 이름으로 전파할 수 있습니다.

<build>
    <finalName>app-${project.version}</finalName>
</build>

또는 상위 프로젝트의 버전(있는 경우)을 클릭합니다.

<build>
    <finalName>app-${parent.version}</finalName>
</build>

그런 다음 빌드 이름 대신 프로젝트 버전을 추적합니다.

, 브런치를 사용하여 SCM에서 빌드버슨을 관리하는 것은 매우 번거롭고 오류가 발생하기 쉽습니다.코드 저장소는 빌드 버전에 구애받지 않는 것이 좋습니다.

가능한 대안은 다음과 같은 릴리스 관리 도구를 사용하는 것입니다.maven release plugin또는 보다 심플한maven version.

예:

여기에서는, 다음의 예를 나타냅니다.maven verion.

예를 들어 SCM 툴을 사용하고 있다고 가정해 봅시다(그럴 가능성이 있습니다).git및 빌드 팩토리(예:Jenkins기타 툴)을 사용합니다.스냅샷을 빌드 및 배포하는 작업과 릴리스용 스냅샷을 구축한다고 가정합니다.

스냅샷 작업에서 다음과 같은 maven 대상을 사용하여 사전 빌드 태스크를 설정할 수 있습니다.

versions:set -DnewVersion=app-1.0-SNAPSHOT

릴리스 작업의 다음 항목을 지정합니다.

versions:set -DnewVersion=app-1.0-RELEASE

이 작업은 로컬에서만 수행되며 코드의 빌드 버전을 관리할 필요가 없기 때문에 문제 없습니다.

이제 신청 후 (릴리스) 버전에 태그를 붙일 수 있습니다.maven version성공적인 구축(유닛, 통합 및 기능 테스트 포함)을 지원합니다.이렇게 하면 각 릴리스에 배치된 코드를 정확하게 추적할 수 있습니다.

팁!! 공간은 돈이다!스냅샷 저장소를 정기적으로 청소합니다.가끔 그렇게 하는 직업을 만드는 것은 그리 어렵지 않을 것이다.

artefact-name은 maven 부트플러그인으로 지정할 수 있습니다.

이 경우, 그것은NewJarName.jar

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>repackage</id>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <finalName>NewJarName</finalName>
                    </configuration>
                </execution>
            </executions>
        </plugin>

언급URL : https://stackoverflow.com/questions/37698473/spring-boot-control-target-jar-file-name

반응형