Maven Antrun Plugin Example
In this example we are going to see how we can use the antrun maven plugin in order to run ant build files inside maven builds.
Maven is a build automation tool used mainly for java projects from apache.
Ant is a software tool for automating software build processes from apache originally created as a replacement for the unix make build tool. It originally come from Apache tomcat project in early 2000.
We are going to integrate an ant build file inside maven pom file in order to generate a SOAP Web Service artifacts that originally were created by ant tool.
For this example we use the following technologies:
- MAC OSX
- Eclipse Luna
- Maven3
- JDK 1.8.0_65 64bits
- Maven antrun plugin 1.8
1. Introduction
For this example we are going to integrate an ant build file inside a maven build. Imagine that our boss come and he say to us that we have to move our actual project based on ant to a maven project, but we can not update yet the generate web services stuff process.
In this situation we have to continue using the actual ant build file to generate the web services base classes, but the project will not be an ant project anymore.
In this kind of situations the maven antrun plugin will help us to run ant build files inside maven lifecycle.
2. Example project
For this example, we are going to use a java project with maven nature that will be packaged as a jar file. Eclipse Luna comes with maven support out of the box, so you don´t have to install anything. Our project will look like this
At this point, we have an empty maven project. In order to generate web services artifacts we have to add the CXF dependency needed to run WSDLToJava in the pom.xml
file (you can choose another Web Service framework if you want), so our pom.xml
will look like this
pom.xml:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javacodegeeks.examples</groupId> <artifactId>maven-antrun-plugin-example</artifactId> <version>1.0.0-SNAPSHOT</version> <name>Macen ant run :: example</name> <url>http://maven.apache.org</url> <properties> <cxf.bundle.version>2.7.18</cxf.bundle.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-bundle</artifactId> <version>${cxf.bundle.version}</version> </dependency> </dependencies> </project>
The next step is to create all the things needed to run the ant build file inside maven.
3. Configure maven antrun plugin
Once you have the maven project ready, you have to add the plugin for run ant build files. To do it you have to edit the pom.xml
file.
Now the pom.xml
file will look like this
pom.xml:
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javacodegeeks.examples</groupId> <artifactId>maven-antrun-plugin-example</artifactId> <version>1.0.0-SNAPSHOT</version> <name>Macen ant run :: example</name> <url>http://maven.apache.org</url> <properties> <cxf.bundle.version>2.7.18</cxf.bundle.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-bundle</artifactId> <version>${cxf.bundle.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <target> <property name="compile_classpath" refid="maven.compile.classpath" /> <property name="runtime_classpath" refid="maven.runtime.classpath" /> <property name="test_classpath" refid="maven.test.classpath" /> <property name="plugin_classpath" refid="maven.plugin.classpath" /> <property name="outputDir" value="${project.build.outputDirectory}" /> <property name="sourceDir" value="${project.build.sourceDirectory}" /> <ant antfile="${basedir}/build.xml"> <target name="generateWSClient" /> </ant> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> <pluginManagement> <plugins> <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-antrun-plugin </artifactId> <versionRange> [1.8,) </versionRange> <goals> <goal>run</goal> </goals> </pluginExecutionFilter> <action> <ignore></ignore> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
We have added the org.eclipse.m2e:lifecycle-mapping
in order to manage dependencies in m2e
eclipse settings, this plugin have not influence on the maven build itself and is not necessary for this tutorial but will help you to avoid some errors from eclipse m2e
lifecycle management.
The pom.xml
file defines the antrun plugin in lines 30 to 32 and defines an execution phase inside the generate-sources
maven phase, so when a maven execution triggers the generate-sources
phase, the plugin will execute.
In the execution
configuration tag (line 37 to 50) we are defining some properties, you can define all the properties that you need in order to run the ant task here. We are defining the ant build file we want to run in lines 46 to 48, so now we have to add the file to our project and all the files needed by the ant build file.
4. Import ant build file and wsdl file
In order to add the ant build file to our project, create a build.xml
file in root folder and add the following content
build.xml:
<?xml version="1.0"?> <project name="javacodegeeks-examples"> <!-- property name="cxf.home" location="/usr/myapps/cxf-2.5.1" / --> <path id="cxf.classpath"> <pathelement path="${runtime_classpath}"/> </path> <target name="generateWSClient"> <echo message="compile classpath: ${compile_classpath}" /> <echo message="runtime classpath: ${runtime_classpath}" /> <echo message="test classpath: ${test_classpath}" /> <echo message="plugin classpath: ${plugin_classpath}" /> <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client" /> <arg value="-verbose" /> <arg value="-d" /> <arg value="src/main/java" /> <arg value="${basedir}/wsdl/sayHello.wsdl" /> <classpath> <path refid="cxf.classpath" /> </classpath> </java> </target> </project>
Let´s see the file content. We are defining a classpath resource called cxf.classpath
in line 6, and we have commented the old CXF reference because we do not need it. We are using the maven runtime classpath
inside ant, this is an antrun plugin feature. We can use the following classpaths
in ant files:
compile_classpath
runtime_classpath
test_classpath
plugin_classpath
We have to explicity define in antrun plugin that it has to expose those classpaths as properties. We can see how those properties are defined in our pom.xml
file in lines 39 to 42. The build file prints some echos in order to show those properties.
Now we have to create a new folder called wsdl
in the root folder and copy to it our wsdl files, in this example we are going to define a SayHello
service without any schema information for demostration purpose. Create inside the new folder a file called sayHello.wsdl
with the following content
sayHello.wsdl:
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.javacodegeeks.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.javacodegeeks.com/" name="SayHelloImplService"> <types></types> <message name="getSayHelloAsString"> <part name="arg0" type="xsd:string"></part> </message> <message name="getSayHelloAsStringResponse"> <part name="return" type="xsd:string"></part> </message> <portType name="SayHello"> <operation name="getSayHelloAsString" parameterOrder="arg0"> <input message="tns:getSayHelloAsString"></input> <output message="tns:getSayHelloAsStringResponse"></output> </operation> </portType> <binding name="SayHelloImplPortBinding" type="tns:SayHello"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"></soap:binding> <operation name="getSayHelloAsString"> <soap:operation soapAction=""></soap:operation> <input> <soap:body use="literal" namespace="http://ws.javacodegeeks.com/"></soap:body> </input> <output> <soap:body use="literal" namespace="http://ws.javacodegeeks.com/"></soap:body> </output> </operation> </binding> <service name="SayHelloImplService"> <port name="SayHelloImplPort" binding="tns:SayHelloImplPortBinding"> <soap:address location="http://localhost:8080/ws/hello"></soap:address> </port> </service> </definitions>
Now, our project will look like this
5. Running the maven build
We are ready to go. We can build our maven project with mvn generate-sources
or mvn clean install
, we can see something like this
Output:
[INFO] Scanning for projects... [INFO] [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven ant run :: example 1.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-antrun-plugin-example --- [INFO] Deleting /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target [INFO] [INFO] --- maven-antrun-plugin:1.8:run (generate-sources) @ maven-antrun-plugin-example --- [INFO] Executing tasks main: generateWSClient: [echo] compile classpath: /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/classes:/Users/fhernandez/.m2/repository/org/apache/cxf/cxf-bundle/2.7.18/cxf-bundle-2.7.18.jar:/Users/fhernandez/.m2/repository/org/apache/velocity/velocity/1.7/velocity-1.7.jar:/Users/fhernandez/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/fhernandez/.m2/repository/wsdl4j/wsdl4j/1.6.3/wsdl4j-1.6.3.jar:/Users/fhernandez/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.6/jaxb-xjc-2.2.6.jar:/Users/fhernandez/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.6/jaxb-impl-2.2.6.jar:/Users/fhernandez/.m2/repository/org/apache/ws/xmlschema/xmlschema-core/2.1.0/xmlschema-core-2.1.0.jar:/Users/fhernandez/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/fhernandez/.m2/repository/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar:/Users/fhernandez/.m2/repository/xml-resolver/xml-resolver/1.2/xml-resolver-1.2.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-jaxws_2.2_spec/1.1/geronimo-jaxws_2.2_spec-1.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-javamail_1.4_spec/1.7.1/geronimo-javamail_1.4_spec-1.7.1.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/slf4j/slf4j-api/1.7.9/slf4j-api-1.7.9.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-servlet_3.0_spec/1.0/geronimo-servlet_3.0_spec-1.0.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-jms/3.0.7.RELEASE/spring-jms-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-aop/3.0.7.RELEASE/spring-aop-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-beans/3.0.7.RELEASE/spring-beans-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-core/3.0.7.RELEASE/spring-core-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-context/3.0.7.RELEASE/spring-context-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-expression/3.0.7.RELEASE/spring-expression-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-asm/3.0.7.RELEASE/spring-asm-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-tx/3.0.7.RELEASE/spring-tx-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpcore-nio/4.2.4/httpcore-nio-4.2.4.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpcore/4.2.4/httpcore-4.2.4.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpasyncclient/4.0-beta3/httpasyncclient-4.0-beta3.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5.jar:/Users/fhernandez/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/fhernandez/.m2/repository/org/apache/mina/mina-core/2.0.7/mina-core-2.0.7.jar:/Users/fhernandez/.m2/repository/asm/asm/3.3.1/asm-3.3.1.jar:/Users/fhernandez/.m2/repository/rhino/js/1.7R2/js-1.7R2.jar:/Users/fhernandez/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0-m10/javax.ws.rs-api-2.0-m10.jar:/Users/fhernandez/.m2/repository/net/oauth/core/oauth-provider/20100527/oauth-provider-20100527.jar:/Users/fhernandez/.m2/repository/net/oauth/core/oauth/20100527/oauth-20100527.jar:/Users/fhernandez/.m2/repository/net/sf/ehcache/ehcache-core/2.5.1/ehcache-core-2.5.1.jar:/Users/fhernandez/.m2/repository/org/apache/ws/security/wss4j/1.6.19/wss4j-1.6.19.jar:/Users/fhernandez/.m2/repository/org/apache/santuario/xmlsec/1.5.8/xmlsec-1.5.8.jar:/Users/fhernandez/.m2/repository/org/opensaml/opensaml/2.6.1/opensaml-2.6.1.jar:/Users/fhernandez/.m2/repository/org/opensaml/openws/1.5.1/openws-1.5.1.jar:/Users/fhernandez/.m2/repository/org/opensaml/xmltooling/1.4.1/xmltooling-1.4.1.jar:/Users/fhernandez/.m2/repository/joda-time/joda-time/2.2/joda-time-2.2.jar:/Users/fhernandez/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/fhernandez/.m2/repository/org/apache/neethi/neethi/3.0.3/neethi-3.0.3.jar [echo] runtime classpath: /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/classes:/Users/fhernandez/.m2/repository/org/apache/cxf/cxf-bundle/2.7.18/cxf-bundle-2.7.18.jar:/Users/fhernandez/.m2/repository/org/apache/velocity/velocity/1.7/velocity-1.7.jar:/Users/fhernandez/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/fhernandez/.m2/repository/wsdl4j/wsdl4j/1.6.3/wsdl4j-1.6.3.jar:/Users/fhernandez/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.6/jaxb-xjc-2.2.6.jar:/Users/fhernandez/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.6/jaxb-impl-2.2.6.jar:/Users/fhernandez/.m2/repository/org/apache/ws/xmlschema/xmlschema-core/2.1.0/xmlschema-core-2.1.0.jar:/Users/fhernandez/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/fhernandez/.m2/repository/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar:/Users/fhernandez/.m2/repository/xml-resolver/xml-resolver/1.2/xml-resolver-1.2.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-jaxws_2.2_spec/1.1/geronimo-jaxws_2.2_spec-1.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-javamail_1.4_spec/1.7.1/geronimo-javamail_1.4_spec-1.7.1.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/slf4j/slf4j-api/1.7.9/slf4j-api-1.7.9.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-servlet_3.0_spec/1.0/geronimo-servlet_3.0_spec-1.0.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-jms/3.0.7.RELEASE/spring-jms-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-aop/3.0.7.RELEASE/spring-aop-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-beans/3.0.7.RELEASE/spring-beans-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-core/3.0.7.RELEASE/spring-core-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-context/3.0.7.RELEASE/spring-context-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-expression/3.0.7.RELEASE/spring-expression-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-asm/3.0.7.RELEASE/spring-asm-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-tx/3.0.7.RELEASE/spring-tx-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpcore-nio/4.2.4/httpcore-nio-4.2.4.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpcore/4.2.4/httpcore-4.2.4.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpasyncclient/4.0-beta3/httpasyncclient-4.0-beta3.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5.jar:/Users/fhernandez/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/fhernandez/.m2/repository/org/apache/mina/mina-core/2.0.7/mina-core-2.0.7.jar:/Users/fhernandez/.m2/repository/asm/asm/3.3.1/asm-3.3.1.jar:/Users/fhernandez/.m2/repository/rhino/js/1.7R2/js-1.7R2.jar:/Users/fhernandez/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0-m10/javax.ws.rs-api-2.0-m10.jar:/Users/fhernandez/.m2/repository/net/oauth/core/oauth-provider/20100527/oauth-provider-20100527.jar:/Users/fhernandez/.m2/repository/net/oauth/core/oauth/20100527/oauth-20100527.jar:/Users/fhernandez/.m2/repository/net/sf/ehcache/ehcache-core/2.5.1/ehcache-core-2.5.1.jar:/Users/fhernandez/.m2/repository/org/apache/ws/security/wss4j/1.6.19/wss4j-1.6.19.jar:/Users/fhernandez/.m2/repository/org/apache/santuario/xmlsec/1.5.8/xmlsec-1.5.8.jar:/Users/fhernandez/.m2/repository/org/opensaml/opensaml/2.6.1/opensaml-2.6.1.jar:/Users/fhernandez/.m2/repository/org/opensaml/openws/1.5.1/openws-1.5.1.jar:/Users/fhernandez/.m2/repository/org/opensaml/xmltooling/1.4.1/xmltooling-1.4.1.jar:/Users/fhernandez/.m2/repository/joda-time/joda-time/2.2/joda-time-2.2.jar:/Users/fhernandez/.m2/repository/xalan/serializer/2.7.1/serializer-2.7.1.jar:/Users/fhernandez/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/fhernandez/.m2/repository/org/apache/neethi/neethi/3.0.3/neethi-3.0.3.jar [echo] test classpath: /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/test-classes:/Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/classes:/Users/fhernandez/.m2/repository/org/apache/cxf/cxf-bundle/2.7.18/cxf-bundle-2.7.18.jar:/Users/fhernandez/.m2/repository/org/apache/velocity/velocity/1.7/velocity-1.7.jar:/Users/fhernandez/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/fhernandez/.m2/repository/wsdl4j/wsdl4j/1.6.3/wsdl4j-1.6.3.jar:/Users/fhernandez/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.6/jaxb-xjc-2.2.6.jar:/Users/fhernandez/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.6/jaxb-impl-2.2.6.jar:/Users/fhernandez/.m2/repository/org/apache/ws/xmlschema/xmlschema-core/2.1.0/xmlschema-core-2.1.0.jar:/Users/fhernandez/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/fhernandez/.m2/repository/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar:/Users/fhernandez/.m2/repository/xml-resolver/xml-resolver/1.2/xml-resolver-1.2.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-jaxws_2.2_spec/1.1/geronimo-jaxws_2.2_spec-1.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/woodstox/woodstox-core-asl/4.4.1/woodstox-core-asl-4.4.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/woodstox/stax2-api/3.1.4/stax2-api-3.1.4.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-javamail_1.4_spec/1.7.1/geronimo-javamail_1.4_spec-1.7.1.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar:/Users/fhernandez/.m2/repository/org/slf4j/slf4j-api/1.7.9/slf4j-api-1.7.9.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-servlet_3.0_spec/1.0/geronimo-servlet_3.0_spec-1.0.jar:/Users/fhernandez/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-jms/3.0.7.RELEASE/spring-jms-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-aop/3.0.7.RELEASE/spring-aop-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-beans/3.0.7.RELEASE/spring-beans-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-core/3.0.7.RELEASE/spring-core-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-context/3.0.7.RELEASE/spring-context-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-expression/3.0.7.RELEASE/spring-expression-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-asm/3.0.7.RELEASE/spring-asm-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/org/springframework/spring-tx/3.0.7.RELEASE/spring-tx-3.0.7.RELEASE.jar:/Users/fhernandez/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpcore-nio/4.2.4/httpcore-nio-4.2.4.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpcore/4.2.4/httpcore-4.2.4.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpasyncclient/4.0-beta3/httpasyncclient-4.0-beta3.jar:/Users/fhernandez/.m2/repository/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5.jar:/Users/fhernandez/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/fhernandez/.m2/repository/org/apache/mina/mina-core/2.0.7/mina-core-2.0.7.jar:/Users/fhernandez/.m2/repository/asm/asm/3.3.1/asm-3.3.1.jar:/Users/fhernandez/.m2/repository/rhino/js/1.7R2/js-1.7R2.jar:/Users/fhernandez/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0-m10/javax.ws.rs-api-2.0-m10.jar:/Users/fhernandez/.m2/repository/net/oauth/core/oauth-provider/20100527/oauth-provider-20100527.jar:/Users/fhernandez/.m2/repository/net/oauth/core/oauth/20100527/oauth-20100527.jar:/Users/fhernandez/.m2/repository/net/sf/ehcache/ehcache-core/2.5.1/ehcache-core-2.5.1.jar:/Users/fhernandez/.m2/repository/org/apache/ws/security/wss4j/1.6.19/wss4j-1.6.19.jar:/Users/fhernandez/.m2/repository/org/apache/santuario/xmlsec/1.5.8/xmlsec-1.5.8.jar:/Users/fhernandez/.m2/repository/org/opensaml/opensaml/2.6.1/opensaml-2.6.1.jar:/Users/fhernandez/.m2/repository/org/opensaml/openws/1.5.1/openws-1.5.1.jar:/Users/fhernandez/.m2/repository/org/opensaml/xmltooling/1.4.1/xmltooling-1.4.1.jar:/Users/fhernandez/.m2/repository/joda-time/joda-time/2.2/joda-time-2.2.jar:/Users/fhernandez/.m2/repository/xalan/serializer/2.7.1/serializer-2.7.1.jar:/Users/fhernandez/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/fhernandez/.m2/repository/org/apache/neethi/neethi/3.0.3/neethi-3.0.3.jar [echo] plugin classpath: /Users/fhernandez/.m2/repository/org/apache/maven/plugins/maven-antrun-plugin/1.8/maven-antrun-plugin-1.8.jar:/Users/fhernandez/.m2/repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar:/Users/fhernandez/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar:/Users/fhernandez/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar:/Users/fhernandez/.m2/repository/org/apache/ant/ant/1.9.4/ant-1.9.4.jar:/Users/fhernandez/.m2/repository/org/apache/ant/ant-launcher/1.9.4/ant-launcher-1.9.4.jar Loading FrontEnd jaxws ... Loading DataBinding jaxb ... wsdl2java -client -verbose -d src/main/java /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/wsdl/sayHello.wsdl wsdl2java - Apache CXF 2.7.18 nov 17, 2015 5:04:11 PM org.apache.cxf.wsdl11.WSDLServiceBuilder checkForWrapped INFORMACIÓN: Operation {http://ws.javacodegeeks.com/}getSayHelloAsString cannot be unwrapped, input message must reference global element declaration with same localname as operation [INFO] Executed tasks [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-antrun-plugin-example --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ maven-antrun-plugin-example --- [INFO] Compiling 3 source files to /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-antrun-plugin-example --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ maven-antrun-plugin-example --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-antrun-plugin-example --- [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-antrun-plugin-example --- [INFO] Building jar: /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/maven-antrun-plugin-example-1.0.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-antrun-plugin-example --- [INFO] Installing /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/target/maven-antrun-plugin-example-1.0.0-SNAPSHOT.jar to /Users/fhernandez/.m2/repository/com/javacodegeeks/examples/maven-antrun-plugin-example/1.0.0-SNAPSHOT/maven-antrun-plugin-example-1.0.0-SNAPSHOT.jar [INFO] Installing /Users/fhernandez/git/javacodegeeks-examples/maven-antrun-plugin/pom.xml to /Users/fhernandez/.m2/repository/com/javacodegeeks/examples/maven-antrun-plugin-example/1.0.0-SNAPSHOT/maven-antrun-plugin-example-1.0.0-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.233 s [INFO] Finished at: 2015-11-17T17:04:13+01:00 [INFO] Final Memory: 22M/217M [INFO] ------------------------------------------------------------------------
After running mvn clean install
, look the line 17 on previous output. You will see how maven calls the generateWSClient
ant target.
6. See the result jar file
Now, after run mvn clean install
, you can explode the generated jar and you can see inside it the generated and compiled classes, like this
7. Download the eclipse project
You can download the full source code of this example here: maven-antrun-plugin-example.zip