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 html
yanı css
sıra js
çeşitli resimlerdir.
src/main/resources
Varsayı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.properties
derlemenin 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-plugin
Java 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.