создание tar-архива из развертывания maven - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь использовать maven v3 для создания выходных данных tar.gz для проекта, отличного от Java, для развертывания в nexus. Я не могу указать tar в параметре упаковки в моем файле pom. Если не ошибаюсь, я могу указать tar в качестве опции для упаковки при запуске mvn deploy. Могу ли я указать это в самом файле pom?

1 Ответ

1 голос
/ 07 августа 2020

Вы можете создать файл TAR.GZ и «прикрепить» его к основному артефакту. У меня есть пример переупаковки WAR в службу Linux на [GitHub] {https://github.com/allen-ball/spring-boot-hello-world/blob/master/service/pom.xml}. Ключевые шаги - это упаковать сборку:

<project ...>
    ...
  <build>
    <pluginManagement>
      <plugins>
        ...
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>single</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <attach>true</attach>
            <formats>
              <format>tar.gz</format>
            </formats>
            <descriptorSourceDirectory>src/main/assemblies</descriptorSourceDirectory>
          </configuration>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
      </plugin>
      ...
    </plugins>
  </build>
</project>

<attach>true</attach> устанавливает артефакт. Сборка в этом случае:

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0
                      http://maven.apache.org/xsd/assembly-2.0.0.xsd">
  <id>bin</id>
  <baseDirectory>${artifactId}-${version}</baseDirectory>
  <files>
    <file>
      <outputDirectory>bin</outputDirectory>
      <source>
        ${project.build.directory}/${project.build.finalName}.jar
      </source>
      <filtered>false</filtered>
      <destName>${artifactId}.jar</destName>
    </file>
  </files>
  <fileSets>
    <fileSet>
      <outputDirectory>bin</outputDirectory>
      <directory>${project.basedir}/src/bin</directory>
      <includes>
        <include>${artifactId}.conf</include>
      </includes>
      <filtered>true</filtered>
    </fileSet>
  </fileSets>
  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>*:*-x86_64:*</include>
      </includes>
      <scope>runtime</scope>
      <outputFileNameMapping>
        lib${artifact.artifactId}.${artifact.type}
      </outputFileNameMapping>
    </dependencySet>
  </dependencySets>
</assembly>

, но вам нужно будет найти / создать такую, которая подходит для вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...