Maven的AspectJ的插件非Spring项目将无法正常工作(Maven AspectJ plu

2019-10-28 16:50发布

我有一个项目,这是不是一个Spring应用程序。 我想在它使用AspectJ的注解。 注释类正在从另一个罐子我引用。 我已经提到低于POM的我的插件部分。 我生成成功,但Maven的控制台输出从来没有提到任何关于AspectJ的插件,还当我跑我的项目注释不工作。

我一直在试图找出什么是错的小时了,但不能弄明白。

<pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <complianceLevel>1.8</complianceLevel>
                    <showWeaveInfo>true</showWeaveInfo>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>it.cvc.ciscocommerce.lps.lp-commons</groupId>
                            <artifactId>lp-commons</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>listpriceservice</warName>
                </configuration>
            </plugin>
            <!-- Plugin for sdaas deployment. For compressing war to tar.gz -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/resources/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.5.201505241946</version>
                <executions>
                    <execution>
                        <id>default-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </pluginManagement>

这些是我正努力的方面库使用的jar定义的两个依赖性。

<dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.7.4</version>
</dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjtools</artifactId>
        <version>1.7.4</version>
    </dependency>

罐子被编译罚款和我缓行使用它的又一个春天应用程序,但没有这一项。 在Spring应用程序,我甚至不具备插件定义Maven的方面。

当我运行Maven构建,在控制台我只看到下面列出的插件。

[DEBUG]目标:org.apache.maven.plugins:行家洁净的插件:2.5:清洁(缺省清洁)[调试]样式:正常

[DEBUG]目标:org.apache.maven.plugins:行家-编译器插件:3.1:编译(默认编译)[调试]样式:正常

[DEBUG]目标:org.apache.maven.plugins:行家资源-插件:2.6:testResources(缺省testResources)[调试]样式:正常

[DEBUG]目标:org.apache.maven.plugins:行家-编译器插件:3.1:testCompile(缺省testCompile)[调试]样式:正常

[DEBUG]目标:org.apache.maven.plugins:行家-万无一失-插件:2.12.4:测试(默认检验)[调试]样式:正常

[DEBUG]目标:org.apache.maven.plugins:行家-战争插件:2.4:战争(缺省战争)[调试]样式:正常

编辑 :阅读kriegaex的答案,关于pluginManagement VS插件后,我改变了我的POM如下。 请注意,我的项目并不多模块它只有一个POM。

<plugins>
        <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <complianceLevel>1.8</complianceLevel>
                    <showWeaveInfo>true</showWeaveInfo>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>it.cvc.ciscocommerce.lps.lp-commons</groupId>
                            <artifactId>lp-commons</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <warName>listpriceservice</warName>
            </configuration>
        </plugin>
        <!-- Plugin for sdaas deployment. For compressing war to tar.gz -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/resources/assembly.xml</descriptor>
                </descriptors>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.5.201505241946</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

当我这样做,我得到下AspectJ的处决执行标签下面的错误

插件执行未包括生命周期配置:org.codehaus.mojo:AspectJ的行家-插件:1.4:编译(执行:默认值,相:流程源)

作为回答不被调用就解决了我的AspectJ插件的最初版本更新我标志着这个问题。 我会打开我的其他问题的新问题。 由于kriegaex指着我正确的方向。

Answer 1:

我觉得这是一个经典,并在所有,但使用Maven初学者的错误没有AspectJ的问题:

您在定义你的插件的默认设置<pluginManagement>部分,但忘了在一个单独的后引用它们<plugins>部分。 因此,Maven有要在使用它们不知道。


更新:

好吧,我会阐述多一点,你似乎仍然有了解如何使用的问题<pluginManagement><plugins> :您可以使用前者,以确定版本,范围和默认设置为你的插件。 然后,可以使用后者为了容易只是参考预定义的(管理)在任何你(可能是多模块)项目的模块,你需要他们没有复制/粘贴相同版本和配置了插件。 因此,它是不是“用非此即彼”,但它是“同时使用,并以智能方式将它们组合”。 例:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>my.group.id</groupId>
            <artifactId>my-plugin-name</artifactId>
            <version>1.2.3</version>
            <configuration>
                <something>foo</something>
            </configuration>
        </plugin>
        <plugin>
            <groupId>my.group.id</groupId>
            <artifactId>my-other-plugin-name</artifactId>
            <version>4.5</version>
            <scope>test</scope>
            <configuration>
                <blah>xyz</blah>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

再后来在同一个模块或另一个模块具有前者作为家长或导入它作为一个BOM(物料清单):

<plugins>
    <plugin>
        <groupId>my.group.id</groupId>
        <artifactId>my-plugin-name</artifactId>
    </plugin>
    <plugin>
        <groupId>my.group.id</groupId>
        <artifactId>my-other-plugin-name</artifactId>
    </plugin>
</plugins>

看到? 非常干净和简单。

这类似于之间的差<dependencyManagement><dependencies>顺便说一下,。

您还可以扩展或覆盖配置在一个管理插件<plugins>部分,这样你就不会局限于什么是预配置。

至于为什么有些管理插件的工作没有你在明确提到他们<plugins>部分:他们无论是在你的父POM或Maven的根POM进行配置,如依赖插件,编译插件和其他预定义和预配置的Maven基地插件。 如果您的Maven显示你的模块有效POM,你会看到他们。

AspectJ的Maven插件是当然不是一个Maven插件基础的,因此你必须自己配置它,它是你正在尝试做的。



文章来源: Maven AspectJ plugin non spring project won't work