CodeGym/Java Course/Modul 3/Mengelola file sambil membangun proyek Maven

Mengelola file sambil membangun proyek Maven

Level 2, Pelajaran 1
Tersedia

2.1 plugin sumber daya salinan maven-resources-plugin

Jika Anda membuat aplikasi web, Anda hanya akan memiliki banyak sumber daya berbeda di dalamnya. Ini adalah pustaka jar, servlet jsp, file pengaturan. Dan tentu saja, ini adalah sekumpulan file statis seperti html, css, js, serta berbagai gambar.

Secara default, saat membangun proyek, Maven hanya akan menyalin semua file Anda dari folder src/main/resourceske direktori target. Jika Anda ingin mengubah perilaku ini, plugin akan membantu Anda maven-resources-plugin.

Contoh kode untuk plugin semacam itu:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>
                   ${basedir}/target/resources
                </outputDirectory>
                <resources>
                    <resource>  instructions for copying a resource 1 </resource>
                    <resource>  instructions for copying a resource 2 </resource>
                    <resource>  instructions for copying a resource N </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Plugin ini akan dipanggil selama fase validasi. Dengan menggunakan tag, <outputDirectory>Anda dapat menyetel direktori tempat plugin harus menyalin sumber daya yang ditentukan dalam file <resources>. Dan di sinilah plugin dapat berkembang dengan sekuat tenaga.

2.2 Memfilter sumber daya dengan plugin maven-resources

Sumber daya plugin dapat ditentukan tidak hanya dalam bentuk file, tetapi juga dalam bentuk direktori. Selain itu, topeng dapat ditambahkan ke direktori, yang menentukan file mana darinya yang akan disertakan dalam sumber daya ini.

Contoh:


            <resource>
                <directory>src/main/resources/images</directory>
                <includes>
                     <include>**/*.png</include>
                </includes>
            </resource>

Dua tanda bintang sebagai topeng mewakili sejumlah direktori . Pada contoh di atas, semua file png yang terdapat dalam direktori src/main/resources/images(dan subdirektorinya) akan diambil sebagai data sumber daya.

Jika Anda ingin mengecualikan beberapa file, Anda dapat menggunakan exclude. Contoh:

<resource>
    <directory>src/main/resources/images</directory>
    <includes>
        <include>**/*.png</include>
    </includes>
    <excludes>
         <exclude>old/*.png</exclude>
    </excludes>
</resource>

Tag diterapkan secara berurutan: pertama, file sertakan yang ditentukan dalam file sertakan akan ditambahkan ke sumber daya, dan kemudian file yang dikecualikan akan dikecualikan dari daftar ini.

Tapi itu belum semuanya. Plugin dapat melihat ke dalam file (jika itu adalah teks, tentu saja). Dan, misalnya, tambahkan application.propertiesversi rakitan yang diperlukan ke file. Agar plugin memproses konten file, Anda perlu menentukan parameternya <filtering>true</filtering>.

Contoh:

<resource>
    <directory>src/main/resources/properties</directory>
    <filtering>true</filtering>
    <includes>
        <include>**/*. properties </include>
    </includes>
</resource>

Detail lebih lanjut tentang plugin ini dapat ditemukan di tautan: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 plugin inklusi sumber maven-source-plugin

Plugin lain yang bermanfaat - maven-source-pluginmemungkinkan Anda memasukkan kode sumber file java Anda ke dalam rakitan. Untuk apa?

Masalahnya adalah selain aplikasi web, sejumlah besar perpustakaan dirakit menggunakan Maven. Banyak proyek Java mengikuti konsep open-source dan didistribusikan ke komunitas Java dengan sumbernya sendiri.

Mengapa Anda memerlukan plugin terpisah? Mengapa Anda tidak bisa menyalin sumbernya saja dan hanya itu?

Pertama, dalam proyek kompleks apa pun, sumber dapat disimpan di beberapa tempat.

Kedua, pembuatan sumber berdasarkan spesifikasi xml sering digunakan, sumber seperti itu juga perlu disertakan dalam rakitan.

Dan ketiga, Anda dapat memutuskan untuk tidak menyertakan file rahasia apa pun di rakitan Anda.

Contoh penggunaan plugin maven-source-plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.4 plugin penyalin ketergantungan maven-ketergantungan-plugin

Anda mungkin juga perlu menyalin dependensi (perpustakaan) dengan cerdas saat membuat proyek. Plugin digunakan untuk ini maven-dependency-plugin.

Contoh:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <outputDirectory>
            ${project.build.directory}/lib/
        </outputDirectory>
    </configuration>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Dalam contoh ini, perilaku default plugin ditulis - menyalin pustaka ke file ${project.build.directory}/lib.

Bagian eksekusi menyatakan bahwa plugin akan dipanggil selama fase build - package, goal - copy-dependences.

Secara umum, plugin ini memiliki tujuan yang cukup besar, berikut adalah yang paling populer:

1 ketergantungan: menganalisis analisis ketergantungan (digunakan, tidak digunakan, ditentukan, tidak ditentukan)
2 ketergantungan: analisis-duplikat mengidentifikasi ketergantungan duplikat
3 ketergantungan: menyelesaikan resolusi (definisi) dari semua dependensi
4 dependensi:resolve-plugin izin (definisi) dari semua plugin
5 ketergantungan: pohon menampilkan pohon ketergantungan

Anda juga dapat mengatur parameter tambahan di bagian konfigurasi:

1 Direktori keluaran Direktori tempat dependensi akan disalin
2 overWriteReleases Tandai untuk menimpa dependensi saat membuat rilis
3 overWriteSnapshots Tandai untuk menimpa dependensi non-terminal yang memiliki SNAPSHOT
4 overWriteIfNewer Tandai untuk menimpa perpustakaan dengan versi yang lebih baru

Contoh:


<configuration>
    <outputDirectory>
         ${project.build.directory}/lib/
    </outputDirectory>
    <overWriteReleases>false</overWriteReleases>
    <overWriteSnapshots>false</overWriteSnapshots>
    <overWriteIfNewer>true</overWriteIfNewer>
 </configuration>

Secara default <overWriteReleases>, dan <overWriteSnapshots>salah, karena <overWriteIfNewer>benar.

Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar