2013-04-26 3 views
1

Я создал проект Aspectj в Eclipse ide, но мне нужно его построить с помощью maven.Как создать проект aspectj с использованием maven?

У меня есть плагин maven-aspectj, но я не знаю, как его использовать.

+0

Это может помочь вам http://stackoverflow.com/questions/2610633/maven-compile-aspectj-project-containing-java-1-6-source –

+0

Это также может помочь вам: [Maven + AspectJ - все шаги по его настройке] (http://stackoverflow.com/questions/12423965/maven-aspectj-all-steps-to-configure-it). – maba

+0

Возможный дубликат [Maven + AspectJ - все шаги для его настройки] (http://stackoverflow.com/questions/12423965/maven-aspectj-all-steps-to-configure-it) –

ответ

2

Ниже приведены шаги, которые я выполнил, чтобы это работало. Это дало мне compile-time weaving. Если вам нужны другие стратегии, вам явно нужен другой подход (например, Spring AOP для прокси-серверов AOP).

  1. Добавьте свойство стандартизировать версии AspectJ, который вы используете:

    <properties> 
        <aspectj.version>1.7.2</aspectj.version> 
        ... 
    
  2. Добавить зависимость времени выполнения:

    <dependency> 
        <groupId>org.aspectj</groupId> 
        <artifactId>aspectjrt</artifactId> 
        <version>${aspectj.version}</version> 
    </dependency> 
    
  3. Добавить плагин AspectJ Maven:

    <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>aspectj-maven-plugin</artifactId> 
        <version>1.4</version> 
        <executions> 
         <execution> 
         <goals> 
          <goal>compile</goal> 
          <goal>test-compile</goal> 
         </goals> 
         </execution> 
        </executions> 
        <dependencies> 
         <dependency> 
         <groupId>org.aspectj</groupId> 
         <artifactId>aspectjrt</artifactId> 
         <version>${aspectj.version}</version> 
         </dependency> 
         <dependency> 
         <groupId>org.aspectj</groupId> 
         <artifactId>aspectjtools</artifactId> 
         <version>${aspectj.version}</version> 
         </dependency> 
        </dependencies> 
        <configuration> 
         <source>1.7</source> 
         <target>1.7</target> 
         <forceAjcCompile>true</forceAjcCompile> 
        </configuration> 
        </plugin> 
    

Я не уверен, действительно ли forceAjcCompile имеет большой смысл, но я видел некоторые случаи, когда аспекты не применялись последовательно. Я обвиняю это (пока) в Eclipse, перезаписывая файлы классов или что-то в этом роде, следовательно, forceAjcCompile.

Дополнительные вещи, которые я сделал:

  1. Добавить src/main/aspects в качестве дополнительного исходного каталога (build-helper-maven-plugin плагин). Просто потому, что она хорошо выглядит в Затмении
  2. Добавить pluginExecution/pluginExecutionFilter для плагина AspectJ (lifecycle-mapping plugin) и установить его на execute и runOnIncremental, так что и аспекты (пере-) применяется при кодировании и тестирование в Eclipse (с помощью m2e)
Смежные вопросы