문제

Svn.revision을 프로젝트 버전에 빌드 번호로 추가하려고 노력하고 있으며 그렇게 할 수없는 것 같습니다. 내 항아리는 올바른 이름 인 Durin Packaging을 가지고 있지만 내 로컬 저장소에 설치되어 버전이 설정되었을 때 $ {buildNumber}가 정의되지 않은 것과 같습니다.

나는 foo-1.0.0-snapshot을 얻는다.$ {buildNumber} foo-1.0.0-snapshot 대신-304

내가 무엇을 잘못하고 있는지 또는 프로젝트 버전에 수정을 추가하고있는 것은 나쁜 아이디어입니까? 도와 주셔서 감사합니다.

<project>
  ...
  <version>1.0.0-${release.identifier}-${buildNumber}</version>
  <properties>
    <release.identifier>SNAPSHOT</release.identifier>
  </properties>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>useLastCommittedRevision</id>
            <goals>
              <goal>create</goal>
            </goals>
            <configuration>
              <useLastCommittedRevision>true</useLastCommittedRevision>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  ...
</project>
도움이 되었습니까?

해결책

문제에는 두 부분이 있습니다.

  1. 당신은 설정하려고합니다 buildNumber 해결되기 전에 버전으로 ${buildNumber} 해결 된 가치보다는.

    버전을 동적으로 변경하는 대신 buildNumberfinalName 빌드의 요소. 이것은 로컬 저장소에 의도 된 이름을 가진 아티팩트를 만듭니다.

  2. 설치 플러그인은 finalName 그리고 그것을 배포하십시오 1.0.0-SNAPSHOT 어쨌든, 나는 그것을 해결하는 방법을 모른다. 그만큼 buildNumber 아래와 같이 플러그인을 구성하면 매니페스트에 추가됩니다.

    따라서 구성은 다음과 같습니다.

    <version>1.0.0-${release.identifier}</version>
    ...
    <build>
      <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
      ...
    </build>
    

빌드 번호를 사용하지 않을 것입니다 SNAPSHOT 프로젝트.

Maven은 다음을 제공합니다 SNAPSHOT 활성 개발에서 휘발성 프로젝트를 의미하는 키워드. 따라서 프로젝트를 참조하면 a SNAPSHOT 종속성 버전에서 Maven은 자동으로 업데이트를 확인하고 종속성을 동기화합니다.

그런 다음 해당 버전의 끝에 빌드 번호를 추가하면 종속성을 수동으로 업데이트해야하므로 SNAPSHOT 접미사.

나는 개인적으로 가능한 경우 빌드 번호를 사용하지 않습니다. 프로젝트를 업데이트 해야하는 경우 버전 번호를 충돌 시키거나 다음과 같은 접미사를 사용합니다. beta-2 또는 RC2. 개정판을 추적 해야하는 경우 SNAPSHOT, 빌드가 시작된 위치를 확인할 수 있도록 매니페스트에 추가하는 것이 좋습니다. SNAPSHOT Maven이 버전을 정상적으로 해결할 수 있도록 접미사. 아래 구성은 매니페스트에 개정을 추가하는 방법을 보여줍니다.

구성에 관한 한 SCM URL이 올바르게 설정되었다고 가정하면 괜찮아 보입니다. POM에 SCM 구성이없는 경우 문제가 될 수 있습니다.

당신은 함께 달릴 수 있습니다 -X 그리고 플러그인의 출력이 속성을 설정하지 않는 이유를 나타내는 출력을 확인하십시오.

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>buildnumber-maven-plugin</artifactId>
  <version>0.9.4</version>
  <executions>
    <execution>
      <id>useLastCommittedRevision</id>
      <phase>validate</phase>
      <goals>
        <goal>create</goal>
      </goals>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <archive>
      <manifest>
        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
      </manifest>
      <manifestEntries>
        <Implementation-Build>${buildNumber}</Implementation-Build>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>

다른 팁

이후에 추가하십시오 buildnumber-maven-plugin:

<plugin>
    <groupId>io.github.michaldo</groupId>
    <artifactId>nashorn-maven-plugin</artifactId>
    <version>0.0.1</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>eval</goal>
            </goals>
            <configuration>
                <script>
                    $project.artifact.version = "${buildNumber}";
                </script>
            </configuration>
        </execution>
    </executions>
</plugin>

그리고 buildNumber 포장 및 배포로 인정됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top