it-swarm-id.com

Maven praktik terbaik untuk membuat artefak Zip ad hoc

Asumsikan bahwa saya perlu mengelola artefak yang terdiri dari folder aribtrary/struktur file yang digulung sebagai arsip Zip. Tidak jelas bagi saya bagaimana menyelesaikan ini di Maven dengan cara yang paling cocok dengan "cara Maven." 

Saya tahu bahwa tidak ada jenis kemasan "Zip". Apakah ini berarti tidak ada siklus hidup generik di Maven untuk sekadar mengambil apa yang saya miliki di folder sumber daya, Zip itu, dan menginstal/menyebarkannya ke repositori saya? 

Saya mencari opsi, dengan evaluasi tentang bagaimana setiap opsi memenuhi persyaratan saya untuk mengikuti cara pakar, karena saya tidak ingin menanggung hukuman yang jelas karena menyimpang dari jalur emas. . . 

49
chad

Putuskan classifier apa yang akan Anda gunakan untuk file Zip Anda, demi argumen katakanlah itu akan menjadi sample.

Dalam proyek Anda, buat file Assembly/sample.xml

Isi Assembly/sample.xml dengan sesuatu seperti ini:

<?xml version="1.0" encoding="UTF-8"?>
<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>sample</id>
  <formats>
    <format>Zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <outputDirectory>/</outputDirectory>
      <directory>some/directory/in/your/project</directory>
    </fileSet>
  </fileSets>
  <!-- use this section if you want to package dependencies -->
  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <excludes>
        <exclude>*:pom</exclude>
      </excludes>
      <useStrictFiltering>true</useStrictFiltering>
      <useProjectArtifact>false</useProjectArtifact>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</Assembly>

Tambahkan ini ke bagian build pom Anda

  <build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-Assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>create-distribution</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>Assembly/sample.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

Sebagai hasilnya ia harus membuat dan menginstal you-project-name-VERSION-sample.Zip.

Saya sarankan Anda membaca bab tentang majelis dari buku pakar Sonatype: https://books.sonatype.com/mvnref-book/reference/assemblies.html

Baca juga spesifikasi format Majelis: http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly.html

62

Isi Assembly/sample.xml dengan sesuatu seperti ini:

<Assembly xmlns="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0 http://maven.Apache.org/xsd/Assembly-1.1.0.xsd">
  <id>install</id>
  <baseDirectory>/</baseDirectory>
  <formats>
  <format>Zip</format>
</formats>
<fileSets>
  <fileSet>
    <includes>
      <include>README*</include>
      <include>*.sh</include>
    </includes>
  </fileSet>
  <fileSet>
    <directory>target/classes/</directory>
    <outputDirectory>resources</outputDirectory>
    <includes>
      <include>*.properties</include>
       <include>*.xml</include>
    </includes>
    <lineEnding>dos</lineEnding>
  </fileSet>
  <!-- 
  <fileSet>
    <directory>target/</directory>
    <outputDirectory>lib</outputDirectory>
    <includes>
      <include>*.jar</include>
    </includes>
    <lineEnding>dos</lineEnding>
  </fileSet>
   -->
</fileSets>
 <!-- use this section if you want to package dependencies -->
  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <excludes>
        <exclude>*:pom</exclude>
      </excludes>
      <useStrictFiltering>true</useStrictFiltering>
      <useProjectArtifact>true</useProjectArtifact>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</Assembly>

tambahkan kode di bawah ini dalam file pom.xml.

<plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-Assembly-plugin</artifactId>
            <configuration>
                <descriptor>Assembly/sample.xml</descriptor>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

jalankan perintah sebagai mvn package -P dev -Dmaven.test.skip

akan membuat file Zip yang meliputi: xxxx.Zip -lib / .jar -resources/. xml/properties -Baca aku -mulai.sh

2
Frank Wu

Dalam proyek maven Anda, buat folder Assembly. Tambahkan file Zip.xml dalam folder Assembly . Tambahkan kode di bawah ini dalam Zip.xml untuk mengemas konten proyek Anda ke Zip.

<Assembly
xmlns="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0 http://maven.Apache.org/xsd/Assembly-1.1.0.xsd">
<id>Zip</id>
<formats>
    <format>Zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
    <fileSet>
        <directory>directoryName of your project</directory>
        <outputDirectory>/</outputDirectory>
    </fileSet>
</fileSets>

0
Abhishek Jha