maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From William Ferguson <william.fergu...@xandar.com.au>
Subject Re: maven-dependency-plugin unpacking aar format?
Date Tue, 22 Jul 2014 05:32:09 GMT
So an Android library is packaging WSDL inside itself and is expecting you
to use it at build time?


On Tue, Jul 22, 2014 at 8:53 AM, Martin Gainty <mgainty@hotmail.com> wrote:

> Here is an aar straight from Axis version example:
>
> //layout of version.aar:
>
>    created: META-INF/
>   inflated: META-INF/MANIFEST.MF
>    created: sample/
>    created: sample/axisversion/
>   inflated: sample/axisversion/Version.class
>   inflated: META-INF/services.xml
>
>
> //org.apache.axis2.deployment.DeploymentEngine axis code used to
> populateService with .aar contents:
>
>     protected ArrayList populateService(AxisServiceGroup serviceGroup,
>                                         URL servicesURL,
>                                         String serviceName) throws
> DeploymentException {
>         try {
>             serviceGroup.setServiceGroupName(serviceName);
>             ClassLoader serviceClassLoader = Utils.createClassLoader(
>                     new URL[]{servicesURL},
>                     axisConfig.getServiceClassLoader(),
>                     true,
>                     (File)
> axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR),
>                     axisConfig.isChildFirstClassLoading());
>             String metainf = "meta-inf";
>             serviceGroup.setServiceGroupClassLoader(serviceClassLoader);
>             //processing wsdl.list
>             InputStream wsdlfilesStream =
>
> serviceClassLoader.getResourceAsStream("meta-inf/wsdl.list");
>             if (wsdlfilesStream == null) {
>                 wsdlfilesStream =
> serviceClassLoader.getResourceAsStream("META-INF/wsdl.list");
>                 if (wsdlfilesStream != null) {
>                     metainf = "META-INF";
>                 }
>             }
>             HashMap servicesMap = new HashMap();
>             if (wsdlfilesStream != null) {
>                 ArchiveReader reader = new ArchiveReader();
>                 BufferedReader input = new BufferedReader(new
> InputStreamReader(wsdlfilesStream));
>                 String line;
>                 while ((line = input.readLine()) != null) {
>                     line = line.trim();
>                     if (line.length() > 0 && line.charAt(0) != '#') {
>                         line = metainf + "/" + line;
>                         try {
>                             List services = reader.getAxisServiceFromWsdl(
>
> serviceClassLoader.getResourceAsStream(line),
>                                     serviceClassLoader, line);
>                             if (services != null) {
>                                 for (Object service : services) {
>                                     AxisService axisService =
> (AxisService) service;
>                                     servicesMap.put(axisService.getName(),
> axisService);
>                                 }
>                             }
>
>                         } catch (Exception e) {
>                             throw new DeploymentException(e);
>                         }
>                     }
>                 }
>             }
>             InputStream servicexmlStream =
>
> serviceClassLoader.getResourceAsStream("META-INF/services.xml");
>             if (servicexmlStream == null) {
>                 servicexmlStream =
> serviceClassLoader.getResourceAsStream("meta-inf/services.xml");
>             } else {
>                 metainf = "META-INF";
>             }
>             if (servicexmlStream == null) {
>                 throw new DeploymentException(
>
> Messages.getMessage(DeploymentErrorMsgs.SERVICE_XML_NOT_FOUND,
>                                 servicesURL.toString()));
>             }
>             DescriptionBuilder builder = new
> DescriptionBuilder(servicexmlStream, configContext);
>             OMElement rootElement = builder.buildOM();
>             String elementName = rootElement.getLocalName();
>
>             if (TAG_SERVICE.equals(elementName)) {
>                 AxisService axisService = null;
>                 String wsdlLocation = "META-INF/service.wsdl";
>                 InputStream wsdlStream =
>
> serviceClassLoader.getResourceAsStream(wsdlLocation);
>                 URL wsdlURL = serviceClassLoader.getResource(metainf +
> "/service.wsdl");
>                 if (wsdlStream == null) {
>                     wsdlLocation = "META-INF/" + serviceName + ".wsdl";
>                     wsdlStream = serviceClassLoader
>                             .getResourceAsStream(wsdlLocation);
>                     wsdlURL = serviceClassLoader.getResource(wsdlLocation);
>                 }
>                 if (wsdlStream != null) {
>                     WSDL11ToAxisServiceBuilder wsdl2AxisServiceBuilder =
>                             new WSDL11ToAxisServiceBuilder(wsdlStream,
> null, null);
>                     File file = Utils.toFile(servicesURL);
>                     if (file != null && file.exists()) {
>                         wsdl2AxisServiceBuilder.setCustomWSDLResolver(
>                                 new AARBasedWSDLLocator(wsdlLocation,
> file, wsdlStream));
>                         wsdl2AxisServiceBuilder.setCustomResolver(
>                                 new AARFileBasedURIResolver(file));
>                     }
>                     if (wsdlURL != null) {
>
> wsdl2AxisServiceBuilder.setDocumentBaseUri(wsdlURL.toString());
>                     }
>                     axisService =
> wsdl2AxisServiceBuilder.populateService();
>                     axisService.setWsdlFound(true);
>                     axisService.setCustomWsdl(true);
>                     axisService.setName(serviceName);
>                 }
>                 if (axisService == null) {
>                     axisService = new AxisService(serviceName);
>                 }
>
>                 axisService.setParent(serviceGroup);
>                 axisService.setClassLoader(serviceClassLoader);
>
>                 ServiceBuilder serviceBuilder = new
> ServiceBuilder(configContext, axisService);
>                 AxisService service =
> serviceBuilder.populateService(rootElement);
>
>                 ArrayList serviceList = new ArrayList();
>                 serviceList.add(service);
>                 return serviceList;
>             } else if (TAG_SERVICE_GROUP.equals(elementName)) {
>                 ServiceGroupBuilder groupBuilder = new
> ServiceGroupBuilder(rootElement, servicesMap,
>                         configContext);
>                 ArrayList servicList =
> groupBuilder.populateServiceGroup(serviceGroup);
>                 Iterator serviceIterator = servicList.iterator();
>                 while (serviceIterator.hasNext()) {
>                     AxisService axisService = (AxisService)
> serviceIterator.next();
>                     String wsdlLocation = "META-INF/service.wsdl";
>                     InputStream wsdlStream =
>
> serviceClassLoader.getResourceAsStream(wsdlLocation);
>                     URL wsdlURL =
> serviceClassLoader.getResource(wsdlLocation);
>                     if (wsdlStream == null) {
>                         wsdlLocation = "META-INF/" + serviceName + ".wsdl";
>                         wsdlStream = serviceClassLoader
>                                 .getResourceAsStream(wsdlLocation);
>                         wsdlURL =
>
> serviceClassLoader.getResource(wsdlLocation);
>                     }
>                     if (wsdlStream != null) {
>                         WSDL11ToAxisServiceBuilder wsdl2AxisServiceBuilder
> =
>                                 new WSDL11ToAxisServiceBuilder(wsdlStream,
> axisService);
>                         File file = Utils.toFile(servicesURL);
>                         if (file != null && file.exists()) {
>                             wsdl2AxisServiceBuilder.setCustomWSDLResolver(
>                                     new AARBasedWSDLLocator(wsdlLocation,
> file, wsdlStream));
>                             wsdl2AxisServiceBuilder.setCustomResolver(
>                                     new AARFileBasedURIResolver(file));
>                         }
>                         if (wsdlURL != null) {
>
> wsdl2AxisServiceBuilder.setDocumentBaseUri(wsdlURL.toString());
>                         }
>                         axisService =
> wsdl2AxisServiceBuilder.populateService();
>                         axisService.setWsdlFound(true);
>                         axisService.setCustomWsdl(true);
>                         // Set the default message receiver for the
> operations that were
>                         // not listed in the services.xml
>                         Iterator operations = axisService.getOperations();
>                         while (operations.hasNext()) {
>                             AxisOperation operation = (AxisOperation)
> operations.next();
>                             if (operation.getMessageReceiver() == null) {
>
> operation.setMessageReceiver(loadDefaultMessageReceiver(
>
> operation.getMessageExchangePattern(), axisService));
>                             }
>                         }
>                     }
>                 }
>                 return servicList;
>             }
>         } catch (IOException e) {
>             throw new DeploymentException(e);
>         } catch (XMLStreamException e) {
>             throw new DeploymentException(e);
>         }
>         return null;
>     }
>
> does this answer your question?
> Martin
> ______________
>
>
> > Date: Tue, 22 Jul 2014 07:56:55 +1000
> > Subject: Re: maven-dependency-plugin unpacking aar format?
> > From: william.ferguson@xandar.com.au
> > To: users@maven.apache.org
> >
> > David, what the use case for unpacking the AAR?
> >
> >
> > William
> >
> >
> > On Tue, Jul 22, 2014 at 7:27 AM, David Hoffer <dhoffer6@gmail.com>
> wrote:
> >
> > > Here is a simplified project showing my use-case, I hope this helps.
>  Note
> > > I'm using unpack-dependencies as the aar is a module in the same
> project;
> > > however I assume the same problem exists with unpack, if that's the
> case
> > > that would make the test project even simpler.
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > >
> > > <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>
> > >
> > >     <groupId>com.company.project</groupId>
> > >     <artifactId>service</artifactId>
> > >     <version>1.0-SNAPSHOT</version>
> > >
> > >     <packaging>pom</packaging>
> > >
> > >     <dependencies>
> > >         <!--note: maven-dependency-plug fails reporting that aar is not
> > > supported-->
> > >         <dependency>
> > >             <groupId>com.company.project</groupId>
> > >             <artifactId>axis-service</artifactId>
> > >             <type>aar</type>
> > >             <version>1.0-SNAPSHOT</version>
> > >         </dependency>
> > >         <!--note: I assume it will have the same problem unpacking a
> public
> > > artifact such as this-->
> > >         <dependency>
> > >             <groupId>com.helpshift</groupId>
> > >             <artifactId>android-aar</artifactId>
> > >             <version>3.4.2</version>
> > >             <type>aar</type>
> > >         </dependency>
> > >     </dependencies>
> > >
> > >     <build>
> > >         <plugins>
> > >             <plugin>
> > >                 <groupId>org.apache.maven.plugins</groupId>
> > >                 <artifactId>maven-dependency-plugin</artifactId>
> > >                 <executions>
> > >                     <execution>
> > >                         <id>unpack-axis-service</id>
> > >                         <phase>generate-resources</phase>
> > >                         <goals>
> > >                             <goal>unpack-dependencies</goal>
> > >                         </goals>
> > >                         <configuration>
> > >
> > > <includeArtifactIds>axis-service</includeArtifactIds>
> > >
> > >
> > >
> <outputDirectory>${project.build.directory}/generated-resources/axis</outputDirectory>
> > >                             <overWriteReleases>true</overWriteReleases>
> > >
> <overWriteSnapshots>true</overWriteSnapshots>
> > >
> > > <includes>META-INF/*.wsdl,META-INF/schema/**/*.xsd</includes>
> > >                         </configuration>
> > >                     </execution>
> > >                 </executions>
> > >             </plugin>
> > >         </plugins>
> > >     </build>
> > >
> > > </project>
> > >
> > >
> > >
> > > On Mon, Jul 21, 2014 at 3:05 PM, Karl Heinz Marbaise <
> khmarbaise@gmx.de>
> > > wrote:
> > >
> > > > HI David,
> > > >
> > > >
> > > >
> > > > > I'm getting the following error trying to unpack some files from
an
> > > aar.
> > > >
> > > >>   Is this not supported?  Is there any way to do this?
> > > >>
> > > >> Failed to execute goal
> > > >>
> org.apache.maven.plugins:maven-dependency-plugin:2.8:unpack-dependencies
> > > >> (unpack-service) on project service: Unknown archiver type: No such
> > > >> archiver: 'aar'. -> [Help 1]
> > > >>
> > > >
> > > > Could you please prepare a example project which reproduces the
> > > > problem..so i can create a JIRA issue for this...
> > > >
> > > > Kind regards
> > > > Karl-Heinz Marbaise
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> > > > For additional commands, e-mail: users-help@maven.apache.org
> > > >
> > > >
> > >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message