Как я могу использовать Maven для генерации JAR-файла из содержимого каталога, который я укажу? - PullRequest
0 голосов
/ 08 октября 2019

Я использую плагин maven-deploy-plugin для развертывания стороннего jar (ранее загруженного в мой целевой каталог из плагина, который здесь не показан) на Nexus в качестве имени 'Third-Party-1.0.jar', это всеработает нормально, используя конфигурацию ниже.

У меня также есть каталог javadoc в моей целевой директории, который является javadoc для этого jar стороннего производителя. Я хотел бы упаковать этот каталог javadoc как 'Third-Party-1.0-javadoc.jar'.

Если бы я мог получить каталог, упакованный как JAR, я думаю, что мог бы javadoc Параметр плагина развертывания ниже для его развертывания, просто не знаете, как упаковать пользовательский каталог в JAR-файл с определенным именем, используя Maven, может быть, плагин сборки?

TLDR;Как использовать Maven для создания файла JAR из содержимого каталога, который я укажу?

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>none</phase>
        </execution>

        <execution>
             <id>deploy-jar</id>
             <phase>deploy</phase>
             <goals>
                 <goal>deploy-file</goal>
             </goals>
             <configuration>
             <file>${project.build.directory}/code.jar</file>
             <url>...</url>
             <repositoryId>...</repositoryId>  
             <url>...</url>            
             <packaging>jar</packaging>
             <generatePom>true</generatePom>
             <groupId>com.example</groupId>
             <artifactId>third-party</artifactId>
             <version>1.0</version> 
             </configuration>     
        </execution>
    </executions>
</plugin>

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Я закончил тем, что использовал maven-assembly-plugin вместо maven-jar-plugin, так как он позволяет лучше контролировать полученный JAR, в том числе не добавлять pom.xml в него, не присоединять его к проекту в качестве артефактабыть развернутым (attach = false), и как это называется. Это позволяет плагину maven-deploy-plugin контролировать, как он развертывается, и какие координаты Maven использовать при его развертывании.

Затем я могу просто присоединить Javadoc JAR, созданный с помощью плагина сборки, к выполнению моего файла развертывания, используятег javadoc:

src / main / assembly / assembly.xml

<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>package-third-party-javadoc</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/dir</directory>  
            <outputDirectory>.</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
        <execution>
            <id>package-third-party-javadoc</id>
            <phase>compile</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <descriptors>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
                <finalName>third-party-javadoc</finalName>
                <appendAssemblyId>false</appendAssemblyId>
                <attach>false</attach>  
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>none</phase>
        </execution>

        <execution>
            <id>deploy-jar</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy-file</goal>
            </goals>
            <configuration>
                <file>${project.build.directory}/code.jar</file>
                <url>...</url>
                <repositoryId>...</repositoryId>  
                <url>...</url>            
                <packaging>jar</packaging>
                <generatePom>true</generatePom>
                <groupId>com.example</groupId>
                <artifactId>third-party</artifactId>
                <version>1.0</version> 
                <javadoc>${project.build.directory}/third-party-javadoc.jar</javadoc>
            </configuration>     
        </execution>
    </executions>
</plugin>
0 голосов
/ 08 октября 2019

Вы можете достичь этого с помощью maven-jar-plugin или с помощью maven-assembly-plugin

Вот способ достижения этого с помощью maven-jar-plugin

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
        <execution>
            <configuration>
                <classifier>docs</classifier>
                <classesDirectory>${project.build.directory}/docs</classesDirectory>
                <includes>**/*</includes>
            </configuration>
            <id>pack-docs</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Теперь запустите:

mvn clean package

Будет создана artifact_name-1.0.0-docs.jar банка

Как создать дополнительную банку с помощью Maven?

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