JavaRush/Курсы/JSP & Servlets/Полезные Maven-плагины

Полезные Maven-плагины

Открыта

Свой maven-репозиторий на 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>javarushu-student</repositoryOwner> </configuration> <executions> <execution> <goals> <goal>site</goal> </goals> <phase>deploy</phase> </execution> </executions> </plugin>
    	</plugins>
    </build>
 
</project>

Разберемся, что тут написано.

Синим цветом выделено создание временного локального репозитория. Технически это просто папка, но нам нужно, чтобы Maven-рассматривал ее как отдельный репозиторий.

Красным цветом мы выделили запуск плагина maven-deploy-plugin, где указали, что собранную библиотеку нужно класть именно в этот временный репозиторий.

И, наконец, зеленым цветом выделен плагин site-maven-plugin, который должен взять все файлы из репозитория и закомитить их на GitHub. Тут понадобятся некоторые пояснения. Все параметры делятся на две группы: что заливаем и куда заливаем.

Что заливаем:
  • outputDirectory — директория, где брать файлы для коммита
  • includes — задает маску файлов для коммита
Куда заливаем:
  • repositoryOwner — имя владельца репозитория на GitHub
  • repositoryName — имя репозитория
  • branch — задает ветку репозитория на GitHub, в которую комитить
  • message — сообщение, которое будет добавлено при коммите

Так же нужно указать логин и пароль к своему репозиторию в Maven setting.xml:

<settings>
  <servers>
    <server>
  	<id>github</id>
      <username>[username]</username>
      <password>[password]</password>
    </server>
  </servers>
</settings>

Чтобы подключить (использовать) библиотеку из GitHub-репозитория в другой проект, нужно указать этот репозиторий в своем 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
  • [username] — это логин на GitHub, в примере это javarush-user

Запаковываем сборку в Docker образ

Мы живем в новое время, когда проекты в результате сборки могу класться в Maven-репозиторий, а могут и в docker storage.

Чтобы подружить 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>javarush/${project.artifactId}</imageName>
    	</configuration>
    	<executions>
      	  <execution> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution>
    	</executions>
  	  </plugin>
    </plugins>
  </build>

Синим выделен момент, где мы добавили goal bulid в package-фазу сборки. Его можно вызвать с помощью команды mvn docker:build.

Тег dockerDirectory задает папку, где находится Dockerfile. А имя образа задается с помощью тега imageName.

Если проект упакован в jar-файл, то docker-файл будет выглядеть примерно так:

FROM java:11
EXPOSE 8080
ADD /target/demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]

Если же ты упаковываешь web-приложение, то может понадобиться добавить Tomcat:

FROM tomcat8
ADD sample.war ${CATALINA_HOME}/webapps/ROOT.war
CMD ${CATALINA_HOME}/bin/catalina.sh run
Комментарии (14)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
21 ноября 2025, 12:50
"Идея, идея находюся товарищи?"
Arthur Kozlov
Уровень 115
18 октября 2025, 20:31
Всё нормально. Нам уже не первый раз дают информацию, для нас из "Будущего".
Мая
Уровень 82
12 октября 2025, 16:19
такое ощущение, что я в космосе летаю, не знаю где конец, где начало, все потеряло смысл....
Анна
Уровень 87
1 августа 2025, 01:55
Пришла сюда на стажировку после 30го уровня премиум подписки, чувствую себя подкидышем. Видимо придется штудировать все материалы, которые мы типо должны знать после обычного курса к этому времени, только уже версию универа)) С этими лекциями приходится общаться с поисковиками уже как с друзьями лучшими👀
Анастасия
Уровень 115
5 августа 2025, 16:47
Аналогично!
rwnmei
Уровень 38
21 августа 2025, 06:34
Всё, что было в той лекции (личный репозиторий на GitHub, Docker) — это темы на вырост. Вернитесь к ним позже, когда будете уверенно чувствовать себя в основах и столкнетесь с реальной необходимостью их использовать.
Виктор
Уровень 113
13 октября 2024, 21:13
К концу этой лекции я забыл где я нахожусь и как меня зовут...
Мая
Уровень 82
12 октября 2025, 16:18
значит, у меня ситуация получше, я просто забыла что я изучаю и умею ли я читать текст.
Роман
Уровень 88
25 сентября 2024, 06:29
Автор сам для себя весь этот уровень писал, как я понимаю. Других объяснений тут быть не может.
Anonymous #3477383
Уровень 2
23 августа 2024, 16:41
ужас ничего не понял
Иван КорниенкоБэтмен в Готэме
5 мая 2024, 14:49
Че это было
Кирилл
Уровень 109
Expert
6 мая 2024, 09:18
Не знаю как другие, но для меня эта лекция с "пояснениями" осталась непонятна. В какой-то прострации после неё. Во-первых, не проще ли сделать jar и загрузить через gitbush или консоль или функционал githab? Во-вторых, мы уже должны знать что такое докер и для чего он нужен?
AiratJava Developer в ТОО PanDevExpert
6 мая 2024, 11:46
про docker +
jvatechsBackend Developer в Ищу стажировкуExpert
13 мая 2023, 00:49
У кого проблема с Error creating blob: Not Found (404):
<repositoryName>SuperLibrary</repositoryName>
<repositoryOwner>javarushustudent</repositoryOwner>
В эти строки вставить данные о своем пустом проекте в гитхаб , допустим вы создали в гитхаб: github.com/mozart/sonata то переделываете в:
<repositoryName>sonata</repositoryName>
<repositoryOwner>mozart</repositoryOwner>
И обязательно в settings.xml мавена либо пароль/логин, либо токен. Я юзал токен, открыл на 7 дней, проставил галочки как на фотках. И все загрузилось. дополнительно можно прочитать тут: https://www.baeldung.com/maven-repo-github