Maven Shade Plugin Filter Kullanımı

31-08-2014
Maven shade plugin'nin <filters> elementi ile bir dependency'i veya bu dependency içerisinde bulunan bir dosyayı exclude edebiliriz. Bunun için <filters> elementi içerisinde bulunan <artifact> elementinin değerini, exclude etmek istediğimiz dependency'nin groupId'sine veya groupId ve artifactId değerlerini birlikte kullanarak set etmemiz gerekir.

Örnek:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-mxj-gpl-db-files</artifactId>
        <version>5.0.12</version>
    </dependency>
</dependencies>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.4</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <!-- Main class -->
                            <mainClass>olyanren.java.database.mysql.embeded.ConnectorMXJObjectTestExample</mainClass>
                            <manifestEntries>
                                <Class-Path>.</Class-Path>
                            </manifestEntries>
                        </transformer>
                    </transformers>

                    <filters>
                        <filter>
                            <artifact>mysql:mysql-connector-mxj-gpl-db-files:*</artifact>
                            <excludes>
                                <exclude>platform-map.properties</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

Örnekte yer alan <artifact>mysql:mysql-connector-mxj-gpl-db-files:*</artifact> değerinde bulunan mysql: ifadesi, dependency'nin groupId'sini temsil eder. Eğer <artifact>mysql:*</artifact> demiş olsaydık, mysql groupId'sine sahip olan tüm dependency'ler içerisindeki platform-map.properties dosyaları exclude olurdu.

© 2019 Tüm Hakları Saklıdır. Codesenior.COM