maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Hoffer <dhoff...@gmail.com>
Subject Re: maven-dependency-plugin unpacking aar format?
Date Tue, 22 Jul 2014 14:41:29 GMT
What's the MDP?


On Tue, Jul 22, 2014 at 8:29 AM, William Ferguson <
william.ferguson@xandar.com.au> wrote:

> I totally agree that it makes sense for the dependency plugin to unpack the
> AAR just like all other archives.
>
> I just don't understand why you need the MDP to do so.
>
>
> On Tue, Jul 22, 2014 at 10:58 PM, David Hoffer <dhoffer6@gmail.com> wrote:
>
> > No that was just an example so I could create a sample project.  Don't
> read
> > too much into this.  They are just AAR dependencies (in my case they come
> > from our build not public).  The maven dependency plugin should handle
> > these no different than it handles jars/etc.
> >
> >
> >
> >
> > On Mon, Jul 21, 2014 at 11:32 PM, William Ferguson <
> > william.ferguson@xandar.com.au> wrote:
> >
> > > 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