CodeGym/Kursus Java/Modul 3/Mengurus fail semasa membina projek Maven

Mengurus fail semasa membina projek Maven

Tahap, pelajaran
Tersedia

2.1 pemalam sumber salin maven-resources-plugin

Jika anda sedang membina aplikasi web, maka anda hanya akan mempunyai banyak sumber yang berbeza di dalamnya. Ini adalah perpustakaan jar, servlet jsp, fail tetapan. Dan sudah tentu, ini adalah sekumpulan fail statik seperti html, css, js, serta pelbagai gambar.

Secara lalai, apabila membina projek, Maven hanya akan menyalin semua fail anda dari folder src/main/resourceske direktori sasaran. Jika anda ingin membuat perubahan pada tingkah laku ini, maka pemalam akan membantu anda maven-resources-plugin.

Contoh kod untuk pemalam sedemikian:

<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>

Pemalam ini akan dipanggil semasa fasa pengesahan. Menggunakan teg, <outputDirectory>anda boleh menetapkan direktori tempat pemalam harus menyalin sumber yang dinyatakan dalam <resources>. Dan di sinilah pemalam boleh terungkap dengan sekuat tenaga.

2.2 Menapis sumber dengan maven-resources-plugin

Sumber pemalam boleh ditentukan bukan sahaja dalam bentuk fail, tetapi serta-merta dalam bentuk direktori. Selain itu, topeng boleh ditambah pada direktori, yang menentukan fail mana daripadanya akan dimasukkan ke dalam sumber ini.

Contoh:


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

Dua asterisk sebagai topeng mewakili sebarang bilangan direktori . Dalam contoh di atas, semua fail png yang terkandung dalam direktori src/main/resources/images(dan subdirektorinya) akan diambil sebagai data sumber.

Jika anda ingin mengecualikan beberapa fail, anda boleh menggunakan exclude. Contoh:

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

Teg digunakan secara berurutan: pertama, fail sertakan yang dinyatakan dalam fail sertakan akan ditambahkan pada sumber, dan kemudian fail kecualikan akan dikecualikan daripada senarai ini.

Tetapi bukan itu sahaja. Pemalam boleh melihat ke dalam fail (jika ia adalah teks, sudah tentu). Dan, sebagai contoh, tambahkan application.propertiesversi pemasangan yang diperlukan pada fail. Untuk membolehkan pemalam memproses kandungan fail, anda perlu menentukan parameter <filtering>true</filtering>.

Contoh:

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

Butiran lanjut tentang pemalam ini boleh didapati di pautan: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 pemalam pemasukan sumber maven-source-plugin

Satu lagi pemalam berguna - maven-source-pluginmembolehkan anda memasukkan kod sumber fail java anda dalam pemasangan. Untuk apa?

Masalahnya ialah sebagai tambahan kepada aplikasi web, sejumlah besar perpustakaan dipasang menggunakan Maven. Banyak projek Java mengikut konsep sumber terbuka dan diedarkan kepada komuniti Java dengan sumber mereka sendiri.

Mengapa anda memerlukan pemalam yang berasingan? Mengapa anda tidak boleh menyalin sumber dan itu sahaja?

Pertama, dalam mana-mana projek yang kompleks, sumber boleh disimpan di beberapa tempat.

Kedua, penjanaan sumber berdasarkan spesifikasi xml sering digunakan, sumber tersebut juga perlu disertakan dalam pemasangan.

Dan ketiga, anda boleh memutuskan untuk tidak memasukkan mana-mana fail rahsia terutamanya dalam perhimpunan anda.

Contoh menggunakan pemalam 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 pemalam salin kebergantungan maven-dependency-plugin

Anda juga mungkin perlu menyalin kebergantungan (perpustakaan) dengan bijak semasa membina projek. Pemalam 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, tingkah laku lalai pemalam ditulis - menyalin perpustakaan ke ${project.build.directory}/lib.

Bahagian pelaksanaan menyatakan bahawa pemalam akan dipanggil semasa fasa binaan - pakej, matlamat - pergantungan salinan.

Secara umum, pemalam ini mempunyai set matlamat yang agak besar, berikut adalah yang paling popular:

1 kebergantungan:menganalisis analisis pergantungan (digunakan, tidak digunakan, ditentukan, tidak ditentukan)
2 dependency:analyse-duplicate mengenal pasti kebergantungan pendua
3 kebergantungan:menyelesaikan resolusi (definisi) semua kebergantungan
4 dependency:resolve-plugin kebenaran (definisi) semua pemalam
5 kebergantungan:pokok memaparkan pokok pergantungan

Anda juga boleh menetapkan parameter tambahan dalam bahagian konfigurasi:

1 outputDirektori Direktori tempat kebergantungan akan disalin
2 overWriteReleases Tandai untuk menulis ganti kebergantungan semasa membuat keluaran
3 overWriteSnapshots Tandai untuk menulis ganti kebergantungan bukan terminal yang mempunyai SNAPSHOT
4 overWriteIfNewer Tandai untuk menulis ganti perpustakaan dengan versi yang lebih baharu

Contoh:


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

Secara lalai <overWriteReleases>, dan <overWriteSnapshots>adalah palsu, kerana <overWriteIfNewer>adalah benar.

Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi