2.1 maven-resources-plugin kopya kaynakları eklentisi

Bir web uygulaması oluşturuyorsanız, içinde bir sürü farklı kaynağa sahip olacaksınız. Bunlar jar kütüphaneleri, jsp servlet'leri, ayar dosyalarıdır. Ve tabii ki bu, , , gibi bir dizi statik dosyanın htmlyanı csssıra jsçeşitli resimlerdir.

src/main/resourcesVarsayılan olarak, bir proje oluştururken Maven tüm dosyalarınızı klasörden hedef dizine kopyalayacaktır . Bu davranışta değişiklik yapmak istiyorsanız eklenti size yardımcı olacaktır maven-resources-plugin.

Böyle bir eklenti için örnek kod:

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

Bu eklenti doğrulama aşamasında çağrılacak. Etiketi kullanarak, <outputDirectory>eklentinin <resources>. Ve bu, eklentinin tüm gücüyle ortaya çıkabileceği yerdir.

2.2 Maven-resources-plugin ile kaynakları filtreleme

Eklenti kaynakları yalnızca dosya biçiminde değil, hemen dizin biçiminde de belirtilebilir. Ayrıca, dizine hangi dosyaların bu kaynağa dahil edileceğini belirten bir maske eklenebilir.

Örnek:


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

Maske olarak iki yıldız, herhangi bir sayıda dizini temsil eder . Yukarıdaki örnekte, dizinde src/main/resources/images(ve alt dizinlerinde) bulunan tüm png dosyaları kaynak verisi olarak alınacaktır.

Bazı dosyaları hariç tutmak istiyorsanız, exclude. Örnek:

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

Etiketler sırayla uygulanır: önce, içerme dosyalarında belirtilen dahil etme dosyaları kaynağa eklenir ve ardından hariç tutma dosyaları bu listeden çıkarılır.

Ama hepsi bu kadar değil. Eklenti dosyaların içine bakabilir (elbette metin iseler). Örneğin, application.propertiesderlemenin gerekli sürümünü dosyaya ekleyin. Eklentinin dosyanın içeriğini işlemesi için parametreyi belirtmeniz gerekir <filtering>true</filtering>.

Örnek:

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

Bu eklenti hakkında daha fazla ayrıntı şu bağlantıda bulunabilir: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 maven-source-plugin kaynak ekleme eklentisi

Başka bir yararlı eklenti - maven-source-pluginJava dosyalarınızın kaynak kodunu derlemeye dahil etmenize olanak tanır. Ne için?

Mesele şu ki, web uygulamalarına ek olarak, Maven kullanılarak çok sayıda kitaplık bir araya getirildi. Pek çok Java projesi açık kaynak kavramını takip eder ve Java topluluğuna kendi kaynaklarıyla dağıtılır.

Neden ayrı bir eklentiye ihtiyacınız var? Neden kaynağı kopyalayamıyorsunuz ve hepsi bu?

İlk olarak, herhangi bir karmaşık projede kaynaklar birkaç yerde saklanabilir.

İkinci olarak, xml özelliklerine dayalı kaynakların oluşturulması sıklıkla kullanılır, bu tür kaynakların da derlemeye dahil edilmesi gerekir.

Ve üçüncü olarak, derlemenize özellikle gizli dosyaları dahil etmemeye karar verebilirsiniz.

maven-source-plugin eklentisini kullanmanın bir örneği:

<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 maven-bağımlılık-eklentisi bağımlılık kopyalama eklentisi

Bir proje oluştururken bağımlılıkları (kütüphaneleri) akıllıca kopyalamanız da gerekebilir. Bunun için bir eklenti kullanılır maven-dependency-plugin.

Örnek:

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

Bu örnekte, eklentinin varsayılan davranışı, kitaplıkların ${project.build.directory}/lib.

Yürütme bölümü, eklentinin oluşturma aşamasında - paket, hedef - kopya bağımlılıkları sırasında çağrılacağını belirtir.

Genel olarak, bu eklenti oldukça geniş bir hedef grubuna sahiptir, işte en popüler olanları:

1 bağımlılık:analiz bağımlılık analizi (kullanılmış, kullanılmamış, belirtilmiş, belirtilmemiş)
2 bağımlılık:analyze-duplicate yinelenen bağımlılıkları belirleme
3 bağımlılık:çöz tüm bağımlılıkların çözünürlüğü (tanım)
4 bağımlılık:çözme eklentisi tüm eklentilerin izni (tanım)
5 bağımlılık:ağaç bağımlılık ağacını görüntüleme

Yapılandırma bölümünde ek parametreler de ayarlayabilirsiniz:

1 çıktı dizini Bağımlılıkların kopyalanacağı dizin
2 Üzerine Yazma Sürümleri Sürüm oluştururken bağımlılıkların üzerine yazmak için işaretle
3 anlık görüntülerin üzerine yaz SNAPSHOT içeren uçbirim dışı bağımlılıkların üzerine yazmak için işaretle
4 ÜzerineYazılırsaYeni Daha yeni sürümlerle kitaplıkların üzerine yazmak için işaretle

Örnek:


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

Varsayılan olarak <overWriteReleases>ve <overWriteSnapshots>yanlıştır, çünkü <overWriteIfNewer>doğrudur.