Имам този проблем с Netbeans 8.0 и вградения проект Maven за прототипа на проекта „Java Application“. Освен това имам Maven 3 и открих, че някои от предложенията в мрежата не съвпадат с кода на maven, използван и с Netbeans.
Както и да е, ето една проста рецепта за разполагане на JAR файл за стартиране на основния клас и вграждане на зависими библиотеки. Направих тази работа, като сравних POM файлове на други проекти за проекти, които открих, че работят с JAR-ове на подпроекти, така че ако някой с по-добри познания за Maven забележи готча, моля, говорете. Освен това оставих някои нормални неща, за да осигуря контекст. Следва пример:
<properties>
<packageName>trials.example</packageName>
<mainClass>${packageName}.CmdApp</mainClass>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4jVersion>1.7.7</slf4jVersion>
<log4jVersion>1.2.17</log4jVersion>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Този раздел разказва на Maven за проекта.
- packageName ... Е Java пакетът за основния клас
- mainClass ..... Напълно квалифицираното име за клас с метод main().
Ще видите тези използвани в maven-jar-plugin.
Другото нещо, което вграденият примерен прототип не направи, беше да пакетира моите подпроекти в JAR, така че да мога да стартирам от командния ред. Това се прави с плъгина maven-dependency-долу. Интересното е, че не е необходимо да пакетираме системните неща и искаме зависимите класове да бъдат опаковани в нашия JAR.
Те се използват, както следва:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<excludeScope>system</excludeScope>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<useDefaultManifestFile>true</useDefaultManifestFile>
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
<packageName>${packageName}</packageName>
<addClasspath>true</addClasspath>
<classpathPrefix>classes/</classpathPrefix>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>${pom.url}</url>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Надяваме се, че това ви спестява няколко часа проверка и тестване, за да се случи. Наздраве, Уил.
person
will
schedule
01.09.2014