2016-11-05 10 views
2

В настоящее время я разрабатываю архитектуру на основе микросервиса для своего приложения. У меня есть мультимодульный проект maven, у которого много сервисов, поэтому я могу легко развернуть их в концентратор докеров, используя команду maven deploy, а также maven docker plugin.Извлечь svn последний измененный номер редакции с помощью buildnumber-maven-plugin

Тем не менее, теги изображений докеров основаны на номере версии проекта, в то время как я хотел бы, чтобы они помечены с последним измененным номером ревизии каждого репозитория. От поры до времени, я пытаюсь просто добавить это поле в качестве манифеста записи с помощью buildnumber-maven-plugin:

Давайте предположим, что мой мульти-модуль проект:

<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"> 
    <modelVersion>4.0.0</modelVersion> 
... 

    <modules> 
     <module>module-a</module> 
     <module>module-b</module> 
    </modules> 

... 

</project> 

И модель для модуля-а будет быть:

<?xml version="1.0" encoding="UTF-8"?> 
<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"> 
    ... 


    <scm> 
     <connection>scm:svn:http://myrepo.com/svn/application/module-a</connection> 
    </scm> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>buildnumber-maven-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>create</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <doCheck>false</doCheck> 
        <doUpdate>true</doUpdate> 
        <useLastCommittedRevision>true</useLastCommittedRevision> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <configuration> 
        <archive> 
         <manifestEntries> 
          <SCM-Revision>${buildNumber}</SCM-Revision> 
         </manifestEntries> 
        </archive> 
       </configuration> 
      </plugin> 
      .... 
     </plugins> 
    </build> 

    <dependencies> 
     ... 
    </dependencies> 

</project> 

вопрос заключается в том, что {BuildNumber} вычисляется на мой рабочий число копий, которое является ссылкой на один последний коммит сделал в хранилище, а не в scm:svn:http://myrepo.com/svn/application/module-a месте. Чтобы объяснить это лучше, когда я отобразить свойство модуля-а с черепахи я получил это:

enter image description here

То, что я хочу, чтобы получить 3248, который относится к последним реальным изменениям, внесенных в модуль-а , вместо 3257 (рабочая копия), что я получаю от плагина. Таким образом, плагин докеров будет знать, является ли это другим тегом изображения и нажимать его только в том случае, если изменения были внесены в модуль в репо.

+1

Из чего я понимаю, у меня, вероятно, есть тот же [вопрос] (https://github.com/mojohaus/buildnumber-maven-plugin/issues/66). – Moreaki

ответ

1

Я думаю, единственное, что вы пропустили здесь

<doCheck>false</doCheck> 

Я думаю, что это должно быть true.

+0

Спасибо за указание. К сожалению, сейчас у меня нет настроенной среды, дайте ей попробовать как можно скорее. –

1
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>buildnumber-maven-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>create</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doCheck>false</doCheck> 
     <doUpdate>true</doUpdate> 
     <useLastCommittedRevision>true</useLastCommittedRevision> 
    </configuration> 
</plugin> 

Это сработало для меня.

+0

Спасибо, что поделились ею! –

 Смежные вопросы

  • Нет связанных вопросов^_^