Back to project page masa.
The source code is released under:
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUC...
If you think the Android project masa listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package org.jvending.masa.plugin.proguard; /*from w w w. j av a2s.c o m*/ import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; import org.jvending.masa.CommandExecutor; import org.jvending.masa.ExecutionException; import org.jvending.masa.MasaUtil; /** * * @goal proguard * */ public class ProguardMojo extends AbstractMojo { /** * The maven project. * * @parameter expression="${project}" */ public MavenProject project; /** * @parameter expression="${session}" */ public MavenSession session; /** * @parameter default-value="${project.build.directory}/${project.build.finalName}-small.jar"; */ public File outjars; /** * @parameter default-value="${project.basedir}/proguard.cfg"; */ public File configFile; /** * @parameter */ public boolean skip; /** * @parameter default-value="true" */ public boolean includeSdkProguardFile; public void execute() throws MojoExecutionException { if ( skip ) { getLog().info( "Plugin configured to skip proguard for this build" ); return; } if ( isSkip() ) { getLog().info( "Property configured to skip proguard for this build" ); return; } File inputFile = new File( project.getBuild().getDirectory() + File.separator + project.getBuild().getFinalName() + ".jar" ); File proFile = MasaUtil.getProguardJarFile( project ); if ( proFile == null ) { getLog().info( "Proguard not configured for this build" ); return; } File reportDirectory = new File( project.getBasedir(), "proguard" ); if ( !reportDirectory.exists() ) { reportDirectory.mkdirs(); } CommandExecutor executor = CommandExecutor.Factory.createDefaultCommmandExecutor(); executor.setLogger( this.getLog() ); List<String> commands = new ArrayList<String>(); //Run proguard jar commands.add( "-jar" ); commands.add( proFile.getAbsolutePath() ); commands.add( "-injars" ); commands.add( inputFile.getAbsolutePath() ); commands.add( "-outjars" ); commands.add( outjars.getAbsolutePath() ); if ( includeSdkProguardFile ) { String path = "proguard" + File.separator + "proguard-android.txt"; File proguardFile = new File( MasaUtil.getToolnameWithPath( session, project, path ) ); if ( !proguardFile.exists() ) { proguardFile = new File(MasaUtil.getSdkPathFromEnvironment(), "tools" + File.separator + path); } if ( proguardFile.exists() ) { getLog() .info( "Detected sdk proguard file and including in build. To disable, set includeSdkProguardFile parameter to false." ); commands.add( "-include" ); commands.add( proguardFile.getAbsolutePath() ); } } commands.add( "-include" ); commands.add( configFile.getAbsolutePath() ); //Reporting commands.add( "-printseeds" ); commands.add( new File( reportDirectory, "seeds.txt" ).getAbsolutePath() ); commands.add( "-printmapping" ); commands.add( new File( reportDirectory, "mapping.txt" ).getAbsolutePath() ); commands.add( "-printusage" ); commands.add( new File( reportDirectory, "usage.txt" ).getAbsolutePath() ); commands.add( "-dump" ); commands.add( new File( reportDirectory, "dump.txt" ).getAbsolutePath() ); for ( Artifact artifact : (Set<Artifact>) project.getDependencyArtifacts() ) { commands.add( "-libraryjars" ); commands.add( artifact.getFile().getAbsolutePath() ); } try { executor.executeCommand( "java", commands, project.getBasedir(), false ); } catch ( ExecutionException e ) { throw new MojoExecutionException( "", e ); } } private static boolean isSkip() { return Boolean.getBoolean( "proguard.skip" ); } }