Вы допустили классическую ошибку новичка: вы предполагаете, что плагины, настроенные в разделе pluginManagement
, будут автоматически использоваться во время сборки.На самом деле они не будут.Ни AspectJ Maven, ни Assembly не будут работать таким образом, поэтому, конечно, в вашем каталоге target
не будет JAR с зависимостями.
Вам также необходимо явно добавить плагины в раздел plugins
,ссылаясь на них, по крайней мере, по идентификатору группы и имени (там нет необходимости указывать версию или конфигурацию, если только вы не хотите переопределить то, что вы уже определили в pluginManagement
).
Кроме того, вы заметите, что AspectJ Maven по-прежнему неправильно настроен исборка не удастся, как только плагин активирован.Но это выходит за рамки вашего вопроса, поэтому я не буду подробно останавливаться на этом здесь.
PS: я скопировал ваши настройки в собственное POM, исправил их и могу подтвердить это, как только плагин AspectJимеет правильные настройки, плагин Assembly выполняет свою работу, как и ожидалось, включая манифест с правильным основным классом.
Обновление: Таким образом, вы предоставляете только фрагмент POM без кода для компиляциии беги, но ты хочешь увидеть мое полное ПОМ.Я нахожу это немного странным, потому что на самом деле вы должны предоставить MCVE .Но в любом случае вот что у меня есть: я просто включил ваш сборочный плагин в один из моих собственных проектов, где я обычно использую плагин One-JAR (создаю исполняемый JAR из JAR), заменил свой плагин на ваш и проверил, могу ли я запуститьвыполнимый с java -jar ...
.Тест прошел успешно.Я все еще на JDK 8, однако, по этому вопросу я не обновил всю свою систему сборки.Для примера я также удалил все мои другие зависимости, кроме AspectJ runtime.
<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.a.b.c</groupId>
<artifactId>JarNameHere</artifactId>
<version>0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<main-class>com.a.b.c.MainClass</main-class>
<aspectj.version>1.8.13</aspectj.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<pluginManagement>
<plugins>
<!-- Maven Assembly Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<mainClass>${main-class}</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- AspectJ configuration -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11</version>
<configuration>
<!--<showWeaveInfo>true</showWeaveInfo>-->
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<Xlint>ignore</Xlint>
<complianceLevel>${maven.compiler.target}</complianceLevel>
<encoding>${project.build.sourceEncoding}</encoding>
<!--<verbose>true</verbose>-->
<!--<warn>constructorName,packageDefaultMethod,deprecation,maskedCatchBlocks,unusedLocals,unusedArguments,unusedImport</warn>-->
</configuration>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
</dependencies>
</project>