Pertanyaan Bagaimana cara mempublikasikan file pihak ke-3 untuk repo remote maven menggunakan pom.xml yang ada?


Saya memiliki beberapa toples pihak ketiga yang ingin saya unggah ke repo nexus maven saya, dan sejauh ini saya telah menemukan dua cara untuk melakukannya.

mvn deploy:deploy-file -DgroupId=<group-id> \
  -DartifactId=<artifact-id> \
  -Dversion=<version> \
  -Dpackaging=<type-of-packaging> \
  -Dfile=<path-to-file> \
  -DrepositoryId=<id-to-map-on-server-section-of-settings.xml> \
  -Durl=<url-of-the-repository-to-deploy>

Saya mengharapkan perpustakaan pihak ke-3 untuk diperbarui sering mengatakan sekitar seperempat mungkin lebih banyak ketika ada pembaruan / rilis keamanan.

Kedua dari kedua pendekatan di atas adalah manual Anda harus mengetikkan perintah longish atau klik untuk mewujudkannya. Saya lebih suka solusi sederhana yang tidak spesifik produk atau membutuhkan opsi baris perintah yang panjang.

Apakah mungkin menulis maven pom.xml yang menerbitkan pihak ke-3 .tar.gz hanya dengan melakukan mvn deploy 

Saya menggunakan maven 3.0.5

MEMPERBARUI Contoh pom.xml yang bekerja untuk saya berdasarkan jawaban radai di bawah ini.


4
2017-07-02 16:04


asal


Jawaban:


kami memiliki kebutuhan yang sama di sini dengan mengawasi artefak non-maven dan memperbaruinya di nexus kami.

cara kami melakukannya adalah memiliki proyek "thirdparty" di kontrol versi yang menyimpan artefak non-maven, masing-masing dengan file pomnya sendiri.

ketika Anda memutakhirkan pihak ke-3 Anda menimpa yang lama di proyek pihak ketiga, bunp versi dalam file pom terkait dan jalankan "mvn deploy" untuk memasukkannya ke dalam repositori kami.

file pom untuk "build" yang menghasilkan * .tar.gz akan memiliki pom seperti ini:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>myArtifact</artifactId>
    <packaging>pom</packaging> <!-- so it wont auto-create any *.jars or anything -->

    <build>
        <resources>
            <resource>
                <!-- put a configuration here to copy your artifact to /target -->
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy static resource files</id>
                        <goals>
                            <goal>resources</goal>
                        </goals>
                        <phase>generate-sources</phase>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- this creates your *.tar.gz -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>Create final ZIP package</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <appendAssemblyId>true</appendAssemblyId>
                            <descriptors>
                                <descriptor>platform-assembly.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

dengan deskriptor seembly di sampingnya: yang satu ini paket banyak hal sebagai *. tar.gz, mempertahankan bendera yang dapat dieksekusi untuk file * .sh. Anda perlu mengedit agar sesuai dengan kebutuhan Anda

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>${envClassifier}</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>yourTargetDir</directory>
            <outputDirectory>/</outputDirectory>
            <excludes>
                <exclude>**/*.sh</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>yourTargetDir</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>**/*.sh</include>
            </includes>
            <fileMode>755</fileMode>
        </fileSet>
    </fileSets>
</assembly>

EDIT: jika Anda tidak perlu mengekstrak / mess-dengan / artefak * .tar.gz bahwa Anda memiliki pilihan yang jauh lebih sederhana - gunakan build helper maven plugin lampirkan tujuan artefak untuk melampirkan * .tar.gz Anda agar disertakan dalam penerapan / pemasangan

Anda jelas perlu memperbarui semua langkah yang bergantung pada versi artefak baru ini.


5
2017-07-02 16:16



Berikut adalah pom.xml yang saya gunakan untuk menyelesaikan masalah saya berdasarkan saran radai untuk menggunakan plugin build helper

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example.thirdparty</groupId>
    <artifactId>server-jre</artifactId>
    <version>7.25</version>
    <packaging>pom</packaging>


    <distributionManagement>
        <repository>
          <id>thirdparty</id>
          <url>http://localhost:8082/nexus/content/repositories/thirdparty/</url>
        </repository>
    </distributionManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>files/server-jre-7u25-linux-x64.tar.gz</file>
                                    <type>tar.gz</type>
                                  <classifier>linux-x64</classifier>                                        
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

2
2017-07-02 17:53