栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Maven项目中的AspectJ,无法正常工作/编织

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven项目中的AspectJ,无法正常工作/编织

您的配置存在几个问题:

  • 该方面应
    Aspect
    使用大写字母“ A” 命名,而不是
    aspect
    保留关键字。
  • POM缺少结束
    </project>
    标记。
  • POM有一个
    <pluginManagement>
    部分,但没有单独的
    <plugins>
    部分,即,您为插件提供了默认值,但实际上并未声明要使用它们。因此,您可以使用
    <plugins>
    不带独立部分的内容,
    <pluginManagement>
    也可以在其他
    <plugins>
    部分中重新声明插件。
  • aspectj-maven-plugin
    需要
    <version>
    。您忘记指定一个。
  • aspectj-maven-plugin
    还需要一个
    <complianceLevel>
    配置。
  • 您使用编译时编织,因此不需要
    <outxml>
    设置。仅在加载时编织时才需要。
  • aspectjrt 依赖需要至少版本1.7.4,以与所使用的版本不兼容 AspectJ的Maven的插件 默认情况下,以编译来源1.6。

除此之外,如果您没有令人信服的理由使用较旧版本的Maven插件和依赖项(例如 JUnitexec-maven-plugin),
则建议使用较新版本的Maven插件和依赖项。我还建议使用最新的AspectJ版本1.8.2,并且还指定在 Aspectj-maven-plugin
内部使用该版本。

工作 pom.xml中 最小的变化:

<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.aop</groupId>    <artifactId>aop1</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>aop1</name>    <url>http://maven.apache.org</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>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.7.4</version>        </dependency>    </dependencies>    <build>        <plugins> <plugin>     <groupId>org.prehaus.mojo</groupId>     <artifactId>aspectj-maven-plugin</artifactId>     <version>1.6</version>     <configuration>         <complianceLevel>1.7</complianceLevel>     </configuration>     <executions>         <execution>  <goals>      <goal>compile</goal>  </goals>  <configuration>      <source>1.7</source>      <target>1.7</target>  </configuration>         </execution>     </executions> </plugin> <plugin>     <groupId>org.prehaus.mojo</groupId>     <artifactId>exec-maven-plugin</artifactId>     <version>1.1</version>     <configuration>         <mainClass>com.aop.aop1.App</mainClass>     </configuration> </plugin>        </plugins>    </build></project>

使用建议的更改 工作 pom.xml

<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.aop</groupId>    <artifactId>aop1</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>AOP Sample</name>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <aspectj.version>1.8.2</aspectj.version>        <java.source-target.version>1.7</java.source-target.version>    </properties>    <build>        <plugins> <plugin>     <artifactId>maven-compiler-plugin</artifactId>     <version>3.1</version>     <configuration>         <source>${java.source-target.version}</source>         <target>${java.source-target.version}</target>         <!-- importANT -->         <useIncrementalCompilation>false</useIncrementalCompilation>     </configuration> </plugin> <plugin>     <groupId>org.prehaus.mojo</groupId>     <artifactId>aspectj-maven-plugin</artifactId>     <version>1.6</version>     <configuration>         <showWeaveInfo>true</showWeaveInfo>         <source>${java.source-target.version}</source>         <target>${java.source-target.version}</target>         <Xlint>ignore</Xlint>         <complianceLevel>${java.source-target.version}</complianceLevel>         <encoding>UTF-8</encoding>         <verbose>true</verbose>     </configuration>     <executions>         <execution>  <!-- importANT -->  <phase>process-sources</phase>  <goals>      <goal>compile</goal>      <goal>test-compile</goal>  </goals>         </execution>     </executions>     <dependencies>         <dependency>  <groupId>org.aspectj</groupId>  <artifactId>aspectjtools</artifactId>  <version>${aspectj.version}</version>         </dependency>     </dependencies> </plugin> <plugin>     <groupId>org.prehaus.mojo</groupId>     <artifactId>exec-maven-plugin</artifactId>     <version>1.3</version>     <configuration>         <mainClass>com.aop.aop1.App</mainClass>     </configuration> </plugin> <plugin>     <groupId>org.dstovall</groupId>     <artifactId>onejar-maven-plugin</artifactId>     <version>1.4.4</version>     <executions>         <execution>  <configuration>      <onejarVersion>0.96</onejarVersion>      <mainClass>com.aop.aop1.App</mainClass>      <attachToBuild>true</attachToBuild>  </configuration>  <goals>      <goal>one-jar</goal>  </goals>         </execution>     </executions> </plugin>        </plugins>    </build>    <pluginRepositories>        <pluginRepository> <id>oneJAR googlepre.com</id> <url>http://onejar-maven-plugin.googlepre.com/svn/mavenrepo</url>        </pluginRepository>    </pluginRepositories>    <dependencies>        <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${aspectj.version}</version> <!--<scope>runtime</scope>-->        </dependency>        <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope>        </dependency>    </dependencies></project>

顺便说一句, onejar-maven-plugin
只是一个好东西,我喜欢用它来构建一个独立的超级JAR(又名胖JAR),其中包含运行该软件所需的一切,即您的类/方面以及AspectJ运行时。您可以使用以下命令运行程序

java -jar aop1-0.0.1-SNAPSHOT.one-jar.jar

输出应该类似于

mvn exec:java
没有Maven的东西:

Hello World!BEHOLD the power of AOP !!!IN FOO.


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414058.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号