O Primavera @Transactional + AspectJ tempo de compilação Weaving não funcionar

votos
0

Eu tenho um monte de métodos que são marcados com a anotação @Transactional e, em seguida, eles fazem auto-invocação e alguns dos métodos são privadas, então eu quero usar AspectJ sabor de gerenciamento de transações com a Primavera.

Estou compilando meu código com aspectj-maven-plugina versão 1.11:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.11</version>
                <configuration>
                    <proc>none</proc>
                    <forceAjcCompile>true</forceAjcCompile>
                    <complianceLevel>${java.version}</complianceLevel>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <showWeaveInfo>true</showWeaveInfo>


                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-aspects</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>


                    <sources>
                        <source>
                            <basedir>${project.build.directory}/generated-sources/annotations</basedir>
                        </source>
                        <source>
                            <basedir>${project.build.directory}/generated-sources/delombok</basedir>
                        </source>
                    </sources>
                    <testSources>
                        <source>
                            <basedir>
                                ${project.build.directory}/generated-test-sources/delombok
                            </basedir>
                        </source>
                    </testSources>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

A parte de compilação funciona bem e vejo minhas aulas sendo tecida nos logs e eu também pode ver que nos arquivos de classe: um monte de ...$AjcClosure...classes.

Mas, em seguida, meu script maven está executando testes de integração (que são testes de inicialização primavera) usando maven surefireplugin e os testes que se destinam a verificar se a transação está sendo rollbacked no caso de uma exceção está sendo lançada, estão falhando.

Aqui está o meu @Configurationarquivo:

@Configuration
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
public class MyAppConfig {

// some beans not related to persistence

}

O que estou perdendo aqui?

Publicado 10/10/2019 em 00:43
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você não precisa AspectJ Maven ou qualquer outro tipo de ferramenta de tecelagem de tempo de compilação para que isso funcione na Primavera. Basta usar AspectJ via LTW (tempo de carga tecelagem) em seu lugar.

Respondeu 18/10/2019 em 10:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more