aspectjutil-dynamicagent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>com.newmainsoftech</groupId> <artifactId>aspectjutil-dynamicagent</artifactId> <version>2.1.1</version> </dependency>
<?xml version="1.0"?> <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> <parent> <groupId>com.newmainsoftech</groupId> <artifactId>aspectjutil</artifactId> <version>2.1.1</version> </parent> <artifactId>aspectjutil-dynamicagent</artifactId> <name>aspectjutil-dynamicagent</name> <description>Java agent to enable AspectJ weaver dynamically.</description> <version>2.1.1</version> <scm> <connection>scm:svn:http://aspectjutil.googlecode.com/svn/tags/aspectjutil-dynamicagent-2.1.1</connection> <developerConnection>scm:svn:https://aspectjutil.googlecode.com/svn/tags/aspectjutil-dynamicagent-2.1.1</developerConnection> <url>https://code.google.com/p/aspectjutil/source/checkout/tags/aspectjutil-dynamicagent-2.1.1</url> </scm> <distributionManagement> <site><!-- location where site is deployed --> <id>google.code.svn.repo</id> <name>Google Code Subversion Repository</name> <url>svn:https://aspectjutil.googlecode.com/svn/site/aspectjutil-dynamicagent</url> </site> </distributionManagement> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <!-- For LTW --> <version>${aspectjVer}</version> <scope>test</scope> </dependency> <dependency> <!-- Required for dynamic loading of javaagent --> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>${java.specification.version}</version> <!-- Must be ver. 1.5 or higher. Will be verified by maven-antrun-plugin. --> <scope>system</scope> <optional>true</optional> <systemPath>${java.home}${file.separator}..${file.separator}lib${file.separator}tools.jar</systemPath> <!-- For Mac, this needs to be changed to class.jar since tools.jar does not exist. --> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> <build> <testResources> <testResource> <directory>src${file.separator}test${file.separator}resources</directory> <excludes> <exclude>for_beanshell_in_ant_file</exclude> <exclude>for_beanshell_in_ant_file/**/*.*</exclude> </excludes> </testResource> </testResources> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>license-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.google.code.maven-license-plugin</groupId> <artifactId>maven-license-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.11</version> <!-- 2.12 has bug on test property: https://jira.codehaus.org/browse/SUREFIRE-827 http://jira.codehaus.org/browse/SUREFIRE-760 --> <configuration> <argLine>-javaagent:${aspectj.weaver.depedency.path}</argLine> <systemPropertyVariables> <aj.weaving.verbose>true</aj.weaving.verbose> </systemPropertyVariables> <excludes> <exclude>**/DynamicAspectJWeaverAgentTest_byJmockitTest.*</exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Agent-Class>${DynamicAspectJWeaverAgentClassName}</Agent-Class> <Can-Redefine-Classes>true</Can-Redefine-Classes> </manifestEntries> <!-- manifestSection> <name>${project.name}</name> </manifestSection --> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>set-property-for-aspectj-weaver-jar-path</id> <phase>process-test-sources</phase> <goals><goal>run</goal></goals> <configuration> <target name="set-property-for-aspectj-weaver-jar-path-target"> <description> This set path to aspectjweaver.jar file (what should have been <!-- -->declared as dependency) to Maven property named as <!-- -->aspectj.weaver.depedency.path. This is necessary because <!-- -->argLine parameter of maven-surefire-plugin seems to interpret <!-- -->only Property object to actual String value. For detail, see <!-- -->http://www.evernote.com/shard/s142/sh/cff8a50c-a243-472a-93ba-4c2deabd0899/8161af862ed4385f673880607d0a75e2 </description> <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="maven.plugin.classpath" /> <if> <isset property="aspectj.weaver.depedency.path" /> <then> <fail> aspectj.weaver.depedency.path property has already been <!-- -->defined; its assigned value is ${aspectj.weaver.depedency.path}. </fail> </then> </if> <if> <or> <isset property="org.aspectj:aspectjweaver:jar" /> </or> <else> <fail> It seems missing declaration of mandatory aspectjweaver <!-- -->dependency. Or could be wrong value of scope given for <!-- -->aspectjweaver dependency. </fail> </else> </if> <script language="javascript"> <![CDATA[ importClass( org.apache.tools.ant.taskdefs.Exit); var mavenProject = self.getProject().getReference( "maven.project"); var properties = mavenProject.getProperties(); var aspectjWeaverDepedencyPath = self.getProject().getProperty( "org.aspectj:aspectjweaver:jar"); if ( aspectjWeaverDepedencyPath) { properties.setProperty( "aspectj.weaver.depedency.path", new String( aspectjWeaverDepedencyPath)); self.log( "Having set \"" + new String( aspectjWeaverDepedencyPath) + "\" to aspectj.weaver.depedency.path property "); } else { var exitObj = new Exit(); exitObj.setMessage( "org.aspectj:aspectjweaver:jar property has not been defined." ); exitObj.execute(); } ]]> </script> </target> </configuration> </execution> <!-- This was preparation for DynamicAspectJWeaverAgentTest_byJmockitTest execution> <id>process-test-classes-execution</id> <phase>process-test-classes</phase> <goals><goal>run</goal></goals> <configuration> <target name="process-test-classes_target"> <ant antfile="${basedir}${file.separator}ant${file.separator}maven-antrun.ant.xml" target="move_test_agent_classes_to_temp_dir_target" inheritRefs="true" /> </target> </configuration> </execution --> <execution> <id>declar_DynamicAspectJWeaverAgent_name_property</id> <phase>prepare-package</phase> <goals><goal>run</goal></goals> <configuration> <target name="declar_DynamicAspectJWeaverAgent_name_property_target"> <description> Obtain DynamicAspectJWeaverAgent class name and declare it <!-- -->as a Maven property, in order to set it to Agent-Class <!-- -->attribute in MANIFEST.MF of .jar file being yielded. </description> <path id="classOutputDirectory"> <pathelement location="${project.build.outputDirectory}" /> <pathelement location="${project.build.testOutputDirectory}" /> </path> <script language="beanshell" classpathref="classOutputDirectory"> <![CDATA[ import com.newmainsoftech.aspectjutil.dynamicagent.ForBeanshell; self.log( String.format( "START %1$s TASK of %2$s TARGET >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", new Object[]{ self.getTaskName(), self.getOwningTarget().getName()} ) ); ForBeanshell forBeanshell = new ForBeanshell(); forBeanshell.setMavenPropertyForDynamicAspectJWeaverAgentName( "DynamicAspectJWeaverAgentClassName", project); self.log( String.format( "END %1$s TASK of %2$s TARGET <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", new Object[]{ self.getTaskName(), self.getOwningTarget().getName()} ) ); ]]> </script> </target> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>