private void createHeaderArchive( List<HeaderFilesDirective> finalHeaderFilesDirectives, String ndkArchitecture) throws MojoExecutionException { try { MavenArchiver mavenArchiver = new MavenArchiver(); mavenArchiver.setArchiver(jarArchiver); final File jarFile = new File( new File(project.getBuild().getDirectory()), project.getBuild().getFinalName() + ".har"); mavenArchiver.setOutputFile(jarFile); for (HeaderFilesDirective headerFilesDirective : finalHeaderFilesDirectives) { mavenArchiver .getArchiver() .addDirectory( new File(headerFilesDirective.getDirectory()), headerFilesDirective.getIncludes(), headerFilesDirective.getExcludes()); } final MavenArchiveConfiguration mavenArchiveConfiguration = new MavenArchiveConfiguration(); mavenArchiveConfiguration.setAddMavenDescriptor(false); mavenArchiver.createArchive(project, mavenArchiveConfiguration); String classifier = ndkArchitecture; if (ndkClassifier != null) { classifier += "-" + ndkClassifier; } getLog().debug("Attaching 'har' classifier=" + classifier + " file=" + jarFile); projectHelper.attachArtifact( project, Const.ArtifactType.NATIVE_HEADER_ARCHIVE, classifier, jarFile); } catch (Exception e) { throw new MojoExecutionException(e.getMessage()); } }
private void createHeaderArchive( List<HeaderFilesDirective> finalHeaderFilesDirectives, String ndkArchitecture) throws MojoExecutionException { try { MavenArchiver mavenArchiver = new MavenArchiver(); mavenArchiver.setArchiver(jarArchiver); final File jarFile = new File( new File(project.getBuild().getDirectory()), project.getBuild().getFinalName() + ".har"); mavenArchiver.setOutputFile(jarFile); for (HeaderFilesDirective headerFilesDirective : finalHeaderFilesDirectives) { mavenArchiver .getArchiver() .addDirectory( new File(headerFilesDirective.getDirectory()), headerFilesDirective.getIncludes(), headerFilesDirective.getExcludes()); } final MavenArchiveConfiguration mavenArchiveConfiguration = new MavenArchiveConfiguration(); mavenArchiveConfiguration.setAddMavenDescriptor(false); mavenArchiver.createArchive(project, mavenArchiveConfiguration); if (AndroidExtension.APKLIB.equals(project.getPackaging())) { projectHelper.attachArtifact(project, "har", ndkClassifier, jarFile); } else { projectHelper.attachArtifact(project, "har", ndkArchitecture, jarFile); } } catch (Exception e) { throw new MojoExecutionException(e.getMessage()); } }
private void processMakefileCapture(File localCIncludesFile, String ndkArchitecture) throws MojoExecutionException { try { if (attachHeaderFiles) { final List<HeaderFilesDirective> finalHeaderFilesDirectives = new ArrayList<HeaderFilesDirective>(); if (useLocalSrcIncludePaths) { Properties props = new Properties(); props.load(new FileInputStream(localCIncludesFile)); String localCIncludes = props.getProperty("LOCAL_C_INCLUDES"); if (localCIncludes != null && !localCIncludes.trim().isEmpty()) { String[] includes = localCIncludes.split(" "); for (String include : includes) { final HeaderFilesDirective headerFilesDirective = new HeaderFilesDirective(); File includeDir = new File(project.getBasedir(), include); headerFilesDirective.setDirectory(includeDir.getAbsolutePath()); headerFilesDirective.setIncludes(new String[] {"**/*.h"}); finalHeaderFilesDirectives.add(headerFilesDirective); } } } else { if (headerFilesDirectives != null) { finalHeaderFilesDirectives.addAll(headerFilesDirectives); } } if (finalHeaderFilesDirectives.isEmpty()) { getLog().debug("No header files included, will add default set"); final HeaderFilesDirective e = new HeaderFilesDirective(); e.setDirectory(new File(project.getBasedir() + "/jni").getAbsolutePath()); e.setIncludes(new String[] {"**/*.h"}); finalHeaderFilesDirectives.add(e); } createHeaderArchive(finalHeaderFilesDirectives, ndkArchitecture); } } catch (Exception e) { throw new MojoExecutionException( "Error while processing headers to include: " + e.getMessage(), e); } }