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

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

JSP & Servlets
2 уровень , 5 лекция
Открыта

Свой 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
"Идея, идея находюся товарищи?"
Arthur Kozlov Уровень 115
18 октября 2025
Всё нормально. Нам уже не первый раз дают информацию, для нас из "Будущего".
Мая Уровень 82
12 октября 2025
такое ощущение, что я в космосе летаю, не знаю где конец, где начало, все потеряло смысл....
Анна Уровень 87
1 августа 2025
Пришла сюда на стажировку после 30го уровня премиум подписки, чувствую себя подкидышем. Видимо придется штудировать все материалы, которые мы типо должны знать после обычного курса к этому времени, только уже версию универа)) С этими лекциями приходится общаться с поисковиками уже как с друзьями лучшими👀
Анастасия Уровень 112
5 августа 2025
Аналогично!
Ardan Уровень 57
21 августа 2025
Всё, что было в той лекции (личный репозиторий на GitHub, Docker) — это темы на вырост. Вернитесь к ним позже, когда будете уверенно чувствовать себя в основах и столкнетесь с реальной необходимостью их использовать.
Виктор Уровень 113
13 октября 2024
К концу этой лекции я забыл где я нахожусь и как меня зовут...
Мая Уровень 82
12 октября 2025
значит, у меня ситуация получше, я просто забыла что я изучаю и умею ли я читать текст.
Роман Уровень 88
25 сентября 2024
Автор сам для себя весь этот уровень писал, как я понимаю. Других объяснений тут быть не может.
Anonymous #3477383 Уровень 2
23 августа 2024
ужас ничего не понял
Иван Корниенко Уровень 109
5 мая 2024
Че это было
Кирилл Уровень 109 Expert
6 мая 2024
Не знаю как другие, но для меня эта лекция с "пояснениями" осталась непонятна. В какой-то прострации после неё. Во-первых, не проще ли сделать jar и загрузить через gitbush или консоль или функционал githab? Во-вторых, мы уже должны знать что такое докер и для чего он нужен?
Airat Уровень 106 Expert
6 мая 2024
про docker +
jvatechs Уровень 111 Expert
13 мая 2023
У кого проблема с 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