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: [email protected]
> To: [email protected]
>
> David, what the use case for unpacking the AAR?
>
>
> William
>
>
> On Tue, Jul 22, 2014 at 7:27 AM, David Hoffer <[email protected]> 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 <[email protected]>
> > 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: [email protected]
> > > For additional commands, e-mail: [email protected]
> > >
> > >
> >