У меня есть pom.xmlMaven не incude зависимостей в банку
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.pac</groupId>
<artifactId>test</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>test</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.2</version>
</dependency>
</dependencies>
<!-- ... -->
</project>
и класс аспект:
public class Main
{
public int a = 10;
public static void main(String[] args)
{
Main instance = new Main();
System.out.println(instance.test());
}
public int test(){
return a;
}
}
public aspect TestAspect {
pointcut publicMethodExecuted(): execution(public !static * *(..));
int around() : publicMethodExecuted() {
System.out.println("Test string");
int original_return_value = proceed();
return original_return_value * 100;
}
}
Но МВН установки производят Jar-файл без aspectj
банок. Баночка выглядит следующим образом:
root
|
|--META-INF
|
|--com
| |
| |--pac
| |
| |--Main.class
|
|--TestAspect.class
|
|--builddef.lst
Почему maven-jar-plugin
избавились от aspectj
банок? Как это исправить? Я получил NoClassDefFoundException
во время выполнения:
Exception in thread "main" java.lang.NoClassDefFoundError: org/aspectj/lang/NoAspectBoundException
at com.badmitrii.Main.test(Main.java:1)
at com.badmitrii.Main.main(Main.java:11)
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.NoAspectBoundException
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
В баночках нет зависимостей только кода, который вы сделали в своем пакете. Если у вас нет других зависимостей, вы должны использовать [maven-assembly-plugin] (http://maven.apache.org/plugins/maven-assembly-plugin/) или [maven-shade-plugin] (http://maven.apache.org/plugins/maven-shade-plugin/). – khmarbaise
@khmarbaise Может быть, вы можете предоставить asnwer? – user3663882
Использовать теневой плагин – user489041