У меня была эта проблема с Netbeans 8.0 и встроенным проектом Maven для прототипа проекта «Приложение Java». Также у меня есть Maven 3, и я обнаружил, что некоторые из предложений в Интернете не соответствуют коду maven, используемому с Netbeans.
В любом случае, вот простой рецепт наличия JAR-файла для запуска основного класса и встраивания зависимых библиотек. Я выполнил эту работу, сравнив файлы POM других проектов с проектами, которые, как я обнаружил, работали с JAR-файлами подпроектов, поэтому, если кто-то с лучшими знаниями Maven обнаружит gottcha, пожалуйста, говорите. Кроме того, я оставил некоторые нормальные вещи, чтобы предоставить контекст. Пример ниже:
<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-plugin ниже. Интересный момент заключается в том, что нам не нужно упаковывать системные вещи, и мы хотим, чтобы зависимые классы были заключены в наш 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