Вашето maven хранorще в GitHub
Разработчиците могат да качват своята библиотека в GitHub, за което има специален плъгин site-maven-plugin . Нека да разгледаме пример за използването му:
<project>
<properties>
<github.global.server>github</github.global.server>
<github.maven-plugin>0.9</github.maven-plugin>
</properties>
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Temporary Staging Repository</name>
<url>file://${project.build.directory}/mvn-repo</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<altDeploymentRepository>
internal.repo::default::file://${project.build.directory}/mvn-repo
</altDeploymentRepository>
</configuration>
</plugin>
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>${github.maven-plugin}</version>
<configuration>
<message>Maven artifacts for ${project.version}</message>
<noJekyll>true</noJekyll>
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>
<branch>refs/heads/mvn-repo</branch>
<includes>**/*</includes>
<repositoryName>SuperLibrary</repositoryName>
<repositoryOwner>codegymu-student</repositoryOwner>
</configuration>
<executions>
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Да видим Howво пише тук.
Създаването на временно локално хранorще е маркирано в синьо. Технически това е просто папка, но се нуждаем от Maven, за да я третираме като отделно хранorще.
Маркирахме в червено стартирането на плъгина maven-deploy-plugin , където посочихме, че компorраната библиотека трябва да бъде поставена в това временно хранorще.
И накрая, приставката site-maven-plugin е маркирана в зелено , която трябва да вземе всички файлове от хранorщето и да ги ангажира към GitHub. Тук е необходимо известно обяснение. Всички параметри са разделени на две групи: Howво да попълните и къде да попълните.
Какво попълваме:- outputDirectory - директория, където да получите файлове за комит
- включва - задава маската на файловете за ангажиране
- repositoryOwner - името на собственика на хранorщето в GitHub
- repositoryName - име на хранorще
- клон - задава клона на хранorщето на GitHub, към който да се ангажира
- съобщение - съобщението, което ще бъде добавено при ангажиране
Трябва също така да посочите потребителското име и паролата за вашето хранorще в Maven setting.xml :
<settings>
<servers>
<server>
<id>github</id>
<username>[username]</username>
<password>[password]</password>
</server>
</servers>
</settings>
За да свържете (използвате) библиотека от хранorще на GitHub към друг проект, трябва да посочите това хранorще във вашия pom.xml :
<repositories>
<repository>
<id>[name-project]-mvn-repo</id>
<url>https://raw.github.com/[username]/[name-project]/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
След това Maven ще разбере откъде да вземе библиотеката.
- [name-project] е името на проекта, в нашия случай SuperLibrary
- [потребителско име] е входът в GitHub, в примера е codegym-user
Опаковане на сборката в Docker изображение
Живеем в ново време, когато проектите в резултат на сглобяването могат да бъдат поставени в хранorщето на Maven or може би в докер хранorщето.
За да направим Maven и Docker приятели, имаме нужда от плъгина docker-maven-plugin . Нищо сложно:
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.10</version>
<configuration>
<dockerDirectory>${project.basedir}</dockerDirectory>
<imageName>codegym/${project.artifactId}</imageName>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Маркирана в синьо е точката, в която добавихме целта bulid към пакетната фаза на компилацията. Може да се извика с командата mvn docker:build .
Тагът dockerDirectory указва папката, където се намира Dockerfile. И името на изображението се задава с помощта на етикета imageName .
Ако проектът е пакетиран в jar файл, тогава docker файлът ще изглежда по следния начин:
FROM java:11
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
Ако пакетирате уеб приложение, тогава може да се наложи да добавите Tomcat:
FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run
GO TO FULL VERSION