Maven jak dodać zasoby do generowanego pliku jar

0

Chciał bym dodać dwa archiwa (nie to nie biblioteki, ale archiwa zawierają obrazki i pliki css) do wynikowego pliku jar, próbowałem to zrobić wykorzystując maven-resources-plugin ale udało mi się na razie jedynie przekopiować pliki z jednego folderu do innego a jar dalej nie zawierał tych plików:D

Robiłem to mniej więcej tak:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/docelowaSciezka</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/zrodlowaSciezka</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>*</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Jestem w trakcje poszukiwania informacji/przykładów na temat jakiegoś pluginu który by mi w tym pomógł, ale może jakaś mądra głowa pomoże mi w tym zanim znienawidzę googla ;)

0

Maven Assembly Plugin:

http://maven.apache.org/plugins/maven-assembly-plugin/examples/index.html

Dodajesz co chcesz i gdzie chcesz tylko musisz pamiętać, że te dane o dodawaniu czegoś do archiwum definiujesz w osobnym pliku xml.

0

A jak w tym copy-resources dasz inna sciezke to co sie stanie? Poki co kopiujesz do basedir, a powinienes skopiowac do miejsca ktore jest w taget/classes. Sciezka powinna wygladac jakos tak: ${project.build.outputDirectory}/jakiskatalog (ta zmienna mavena wskaze na target/classes.

0

Ale ten plugin nie wymyślono po to. To tworzy artefakt po budowie źródeł już z tym zasobem i daje go do repo co jest błędne...W repo mają być "czyste" artefakty bez zależności w sobie. To czego Ty chcesz tak jak napisałem załatwia asambly plugin:

 
        <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>assembly</goal>
                        </goals>
                        <configuration>
           
                            <descriptors>
                                <descriptor>release.xml</descriptor>
                            </descriptors>
                            <archive>
                                <manifest>
                                    <mainClass>tutaj main klasa jak jest potrzebna</mainClass>
                                </manifest>
                            </archive>
                            <finalName>${project.artifactId}</finalName>
                        </configuration>
              
                    </execution>
                </executions>
            </plugin>

A w release.xml :

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

    <id>1.0</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    // tutaj sterujesz zależnościami potrzebnymi do uruchomienia
    <dependencySets>
        <dependencySet>
            <unpack>true</unpack>
            <scope>compile</scope>
        </dependencySet>
    </dependencySets>
    <files>
        <file>
            <source>tutaj jakiś zasób</source>
            <outputDirectory>a tutaj gdzie to ma ladować</outputDirectory>
        </file>	
    </files>

</assembly>
 

Zalety? Robisz kilka release'ów jedne mogą być jadrem inne zipem inne warem. Dodajesz zależności jakie chcesz, pliki jakie chcesz możesz zakładać filtry etc

0

Napisal ze to nie biblioteki ani nic, a obrazki i CSS. Moim zdaniem jesli sa wymagane do poprawnego dzialania programu, to wlasnie tam naleza - do wynikowego jara, i owszem, taki wlasnie poprawny jar powinien sie znalezc w repozytorium.
@autor - a dlaczego zwyczajnie nie dodasz tych zasobow do src/main/resources? Wtedy maven sam wszystko zlapie i wrzuci tam gdzie trzeba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1