Maven - несколько файлов JAR - JNLP и один файл JAR в одном файле POM.xml - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь сделать что-то, что мне кажется довольно странным, и у меня возникли некоторые проблемы с этим.

У меня есть проект Java JNLP, который я сейчас создаю с maven через Eclipse, используя webstart-maven-plugin. Эта часть отлично работает. Он генерирует папку lib с моим jar и jar зависимостей в нем и файл jnlp.

Странная часть заключается в том, что мне необходимо также собрать один XML-файл в jar в дополнение к jnlp, описанному выше. До сих пор я пробовал несколько плагинов, в основном сфокусированных на добавлении maven-jar-plugin. Проблема в том, что единственный способ, которым я могу получить это, - это комментировать материал плагина webstart. Каждый работает правильно, когда другой закомментирован.

Во-вторых, каждый раз, когда я пытаюсь добавить maven-jar-plugin в тот же файл pom.xml, что и webstart-maven-plugin, он не может быть скомпилирован из-за одной из следующих ошибок: «целевой каталог используется» или это приводит к тому, что плагин webstart-maven-plugin не может найти «основную» функцию программы - что я нахожу довольно странным, поскольку он находит, что плагин webstart автономен. Либо тот, либо один перезаписывает другой.

Это мой существующий файл POM.xml с закомментированным материалом maven-jar-plugin

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.abc</groupId>
<artifactId>MyApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>MyApp</name>
<url></url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>3.3</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.plist</groupId>
        <artifactId>dd-plist</artifactId>
        <version>1.19</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- Tell maven to compile using Java 1.8 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <executable>${JAVA_1_8_HOME}</executable>
                <fork>true</fork>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>webstart-maven-plugin</artifactId>
            <version>1.0-beta-6</version>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>keytool-api-1.7</artifactId>
                    <version>1.5</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>jnlp-inline</goal>
                    </goals>
                </execution>    
            </executions>
            <configuration>
                <makeArchive>false</makeArchive>
                <filenameMapping>simple</filenameMapping>
                <versionEnabled>false</versionEnabled>
                <jnlpFiles>
                    <jnlpFile>
                        <templateFilename>template.vm</templateFilename>
                        <outputFilename>launch.jnlp</outputFilename>
                        <jarResources>
                            <jarResource>
                                <groupId>abc.com</groupId>
                                <artifactId>MyApp</artifactId>
                                <version>${project.version}</version>
                                <mainClass>My.Main.Class</mainClass>
                            </jarResource>
                        </jarResources>
                    </jnlpFile>
                </jnlpFiles>
                <unsignAlreadySignedJars>true</unsignAlreadySignedJars>
                <canUnsign>true</canUnsign>
                <libPath>lib</libPath>
                <codebase></codebase>

                <updateManifestEntries>
                    <Application-Name>MyApp</Application-Name>
                    <Permissions>all-permissions</Permissions>
                    <Codebase>*</Codebase>
                </updateManifestEntries>
                <jnlp>
                    <j2seVersion>1.7+</j2seVersion>
                    <outputFile>launch.jnlp</outputFile>
                    <mainClass>My.Main.Class</mainClass>
                </jnlp>
                <sign>
                    <keystore>${project.basedir}/myKeystore.jks</keystore>
                    <storepass>MyPassword</storepass>
                    <alias>key</alias>
                    <verify>false</verify>
                </sign>
                <verbose>true</verbose>
            </configuration>
        </plugin>
        <!--<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.0</version>            
        <configuration>
            <finalName>Param_XML</finalName>
            <classesDirectory>${project.basedir}</classesDirectory>
            <includes>
                <include>param.xml</include>
            </includes>
            <forceCreation>true</forceCreation>
        </configuration>
    </plugin> -->
    </plugins>
</build>

...