рдПрдХ рдЬрд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рднрдВрдбрд╛рд░рдг рдФрд░ рдЖрдЙрдЯрдкреБрдЯ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрддреЛрдВ рдХреЛ рдЬрд╛рд░ рдпрд╛ рдпреБрджреНрдз рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рдирдиреЗ рдХрд╛ рдХрд╛рдо рдерд╛ рдЬреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдореИрдВ рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ "рд╕рд░рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдиреАрдЪреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рд╡рд┐рдзрд┐ рдЕрдирдиреНрдп рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп рд╣реИрдВред
рддреЛ, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди:

рдкрд░рд┐рдпреЛрдЬрдирд╛ maven'om рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реА рд╣реИред рд╕реНрд░реЛрдд git рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдХрд░рдг рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
  1. рд╕реНрдХреНрд░рд┐рдкреНрдЯ git рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдЦреАрдВрдЪрддреА рд╣реИ рдФрд░ рдПрдХ рдлрд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦрддреА рд╣реИ
  2. рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреБрдг рдкрдврд╝реЗрдВ
  3. рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рддреЗ рд╕рдордп рдореЗрдирд┐рдлрд╝реЙрд░реНрдо рдЬрд╛рдирдХрд╛рд░реА рдХреЛ
  4. рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ.mf рдореЗрдВ рд╡рд░реНрдЧ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
  5. рд╕рдВрд╕реНрдХрд░рдг рд╡рд░реНрдЧ рдореЗрдВ, рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ


Git


Git рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо craitepo.sh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
#!/bin/sh branch=`git branch|grep \*|cut -d" " -f 2` commit=`git id` echo "buildNumber=${branch}.${commit}" > "$1" 


Maven


рдЕрдм рд╣рдорд╛рд░реЗ pom.xml рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
рдЖрдкрдХреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ git рд╕реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реЗрдЧреАред
 <properties> <versionfile>${project.basedir}/version.properties</versionfile> </properties> 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ
 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <workingDirectory>${project.basedir}</workingDirectory> <executable>/bin/sh</executable> <arguments> <argument>createprop.sh</argument> <argument>${versionfile}</argument> </arguments> </configuration> </plugin> 


рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрдврд╝рдирд╛
 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>${versionfile}</file> </files> </configuration> </execution> </executions> </plugin> 


рдЬрд╛рд░ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрдирд╛
 <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Implementation-Version>${project.version}-${buildNumber}</Implementation-Version> <Main-Class>ru.habrahabr.sandello.Version</Main-Class> </manifestEntries> </archive> </configuration> </plugin> 


рд╕рдлрд╛рдИ рдХрд░рддреЗ рд╕рдордп рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рдПрдБ
 <plugin> <artifactId>maven-clean-plugin</artifactId> <configuration> <filesets> <fileset> <directory>${project.basedir}</directory> <includes> <include>${versionfile}</include> </includes> </fileset> </filesets> </configuration> </plugin> 


рдЬрд╛рд╡рд╛


рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛
 package ru.habrahabr.sandello ; import java.io.IOException; import java.io.InputStream; import java.util.jar.Attributes; import java.util.jar.Manifest; public class Version { public static void main(String[] args) { new Version().ver(); } private void ver() { final InputStream mfStream = getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF"); Manifest mf = new Manifest(); try { mf.read(mfStream); } catch (IOException e) { e.printStackTrace(); } Attributes atts = mf.getMainAttributes(); System.out.println("version: " + atts.getValue(Attributes.Name.IMPLEMENTATION_VERSION)); } } 

рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
mvn package.

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
java -jar my.jar


рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд▓рдХреНрд╖реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЬрд╛рд╡рд╛ -рдЬрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рддрд░реНрдХреЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдФрд░ред рдпрд╛, рд▓рдХреНрд╖реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ Jboss рдпрд╛ tomcat рдореЗрдВ рд░рдЦреА рдЧрдИ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/In119466/


All Articles