I think to recall a thread on the dev list about plans to remove the unpack goal from the dependency plugin, but I can’t find it anymore… regards Domi
On 22.07.2014, at 16:29, William Ferguson <william.fergu...@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 <dhoff...@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.fergu...@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 <mgai...@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.fergu...@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 <dhoff...@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 < >>>> khmarba...@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-unsubscr...@maven.apache.org >>>>>>> For additional commands, e-mail: users-h...@maven.apache.org >>>>>>> >>>>>>> >>>>>> >>>> >>>> >>> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org