Пусть eclipse использует maven для компиляции / переплетения моего кода - PullRequest
3 голосов
/ 25 августа 2011

Я использую ткачество времени компиляции с aspectj, чтобы ткать в транзакционный код Spring, чтобы я мог использовать @Transactional. Когда я запускаю maven compile из Eclipse (который использует aspectj-maven-plugin), eclipse синхронизируется с сервером Tomcat и все идет хорошо.

Но когда Eclipse компилируется (проект-> сборка автоматически), кажется, что он не сплетает весенний транзакционный код, и я получаю эту ошибку:

javax.persistence.TransactionRequiredException: no transaction is in progress

Это очень раздражает, потому что я просто хочу кодировать, а не вручную вызывать компиляцию maven после компиляции eclipse каждый раз.

Нужно ли редактировать Aspect Path или inPath плагина AJDT? Почему Eclipse просто не использует maven для сборки?


Я использую:

  • Eclipse WTP Indigo
  • Spring 3.0.5. Выпуск
  • JDK7 & Tomcat 7
  • плагинов m2eclipse & AJDT

Вот соответствующие фрагменты моего pom.xml:

<!-- AspectJ -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>1.6.11</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.6.11</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.aspects</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>${spring.version}</version>
    <scope>compile</scope>
</dependency>

<!-- Compile time weaving -->
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>compile</id>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <verbose>true</verbose>
                <outxml>true</outxml>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
            </configuration>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
        <!-- omitted test-compile part -->
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.11</version>
        </dependency>
    </dependencies>
</plugin>

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

У меня такая же проблема с проектом, над которым я работаю. Вкратце: для набора инструментов, который вы используете, вам нужно включить ткачество во время загрузки или использовать предыдущую версию Eclipse. В настоящее время существует проблема с подключаемым модулем Eclipse m2e и интеграцией aspectj-maven-plugin с последними версиями Eclipse. Хуже всего то, что ребятам из m2e все равно, потому что они не используют AspectJ.

Вот несколько ссылок на вопрос:

0 голосов
/ 25 августа 2011

В дополнение к автоматической компиляции вы должны убедиться, что плагин для ткачества JDT включен.

Window |Предпочтения;щелкните раздел JDT Weaving - убедитесь, что он включен в данный момент.Когда вы впервые установили плагин, он спросил вас, хотите ли вы включить это, но его можно было отключить, если вы ответили «Нет». Make sure this screen says JDT Weaving is enabled

...