package ca.mestevens.unity; import java.util.ArrayList; import java.util.List; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; import ca.mestevens.unity.utils.ProcessRunner; /** * Goal which builds the android project from unity * * @goal unity-android-package-apk * * @phase package */ public class AndroidCreateApkMojo extends AbstractMojo { /** * @parameter property="unity.project.name" default-value="${project.artifactId}" * @readonly * @required */ public String unityProjectName; /** * @parameter property="project" * @readonly * @required */ public MavenProject project; /** * @parameter property="android.emulator.name" default-value="default" * @readonly * @required */ public String avdDeviceName; /** * @parameter property="android.start.emulator" default-value="false" * @readonly * @required */ public boolean startEmulator; /** * @parameter property="android.emulator.wait.time" default-value="60000" * @readonly * @required */ public String emulatorWaitTime; /** * @parameter property="android.deploy.to.devices" default-value="false" * @readonly * @required */ public boolean deployToDevices; public void execute() throws MojoExecutionException, MojoFailureException { ProcessRunner processRunner = new ProcessRunner(getLog()); String workingDirectory = project.getBasedir().getAbsolutePath() + "/target/" + unityProjectName; List<String> commandList = new ArrayList<String>(); commandList.add("mvn"); commandList.add("clean"); commandList.add("package"); if (startEmulator) { commandList.add("android:emulator-start"); commandList.add("-Dandroid.emulator.avd=" + avdDeviceName); commandList.add("-Dandroid.emulator.wait=" + emulatorWaitTime); } if (deployToDevices) { commandList.add("android:deploy"); } processRunner.killProcessWithName("Unity"); int returnValue = processRunner.runProcess(workingDirectory, commandList.toArray(new String[commandList.size()])); processRunner.checkReturnValue(returnValue); } }