enable "copy resources from artifacts" behavior only if there are any "apksources" dependencies in a maven project

This commit is contained in:
Eugene Kudelevsky
2010-10-21 22:12:23 +04:00
parent 02356aa76b
commit 08c9640432
3 changed files with 35 additions and 5 deletions
@@ -67,12 +67,14 @@ public class AndroidFacetImporter extends FacetImporter<AndroidFacet, AndroidFac
@Override
public void getSupportedDependencyTypes(Collection<String> result, SupportedRequestType type) {
result.add("apksources");
result.add(AndroidMavenUtil.APKSOURCES_DEPENDENCY_TYPE);
}
@Override
protected void setupFacet(AndroidFacet facet, MavenProject mavenProject) {
AndroidMavenProviderImpl.setPathsToDefault(mavenProject, facet.getModule(), facet.getConfiguration());
AndroidMavenProviderImpl.configureAaptCompilation(mavenProject, facet.getModule(), facet.getConfiguration(),
AndroidMavenProviderImpl.hasApkSourcesDependency(mavenProject));
}
@Override
@@ -44,14 +44,27 @@ public class AndroidMavenProviderImpl implements AndroidMavenProvider {
if (genRelativePath != null) {
configuration.GEN_FOLDER_RELATIVE_PATH_APT = '/' + genRelativePath + "/r";
configuration.GEN_FOLDER_RELATIVE_PATH_AIDL = '/' + genRelativePath + "/aidl";
}
}
}
configuration.USE_CUSTOM_APK_RESOURCE_FOLDER = true;
public static void configureAaptCompilation(MavenProject mavenProject,
Module module,
AndroidFacetConfiguration configuration,
boolean hasApkSources) {
String moduleDirPath = FileUtil.toSystemIndependentName(new File(module.getModuleFilePath()).getParent());
String genSources = FileUtil.toSystemIndependentName(mavenProject.getGeneratedSourcesDirectory(false));
if (VfsUtil.isAncestor(new File(moduleDirPath), new File(genSources), true)) {
String genRelativePath = FileUtil.getRelativePath(moduleDirPath, genSources, '/');
if (genRelativePath != null) {
configuration.USE_CUSTOM_APK_RESOURCE_FOLDER = hasApkSources;
configuration.CUSTOM_APK_RESOURCE_FOLDER = '/' + genRelativePath + "/combined-resources/" + SdkConstants.FD_RES;
}
}
configuration.COPY_RESOURCES_FROM_ARTIFACTS = true;
configuration.ENABLE_AAPT_COMPILER = false;
configuration.COPY_RESOURCES_FROM_ARTIFACTS = hasApkSources;
configuration.ENABLE_AAPT_COMPILER = !hasApkSources;
}
@Override
@@ -66,7 +79,7 @@ public class AndroidMavenProviderImpl implements AndroidMavenProvider {
List<File> result = new ArrayList<File>();
if (mavenProject != null) {
for (MavenArtifact depArtifact : mavenProject.getDependencies()) {
if ("apksources".equals(depArtifact.getType())) {
if (AndroidMavenUtil.APKSOURCES_DEPENDENCY_TYPE.equals(depArtifact.getType())) {
result.add(MavenArtifactUtil.getArtifactFile(mavenProject.getLocalRepository(), depArtifact.getMavenId()));
}
}
@@ -79,6 +92,18 @@ public class AndroidMavenProviderImpl implements AndroidMavenProvider {
MavenProject mavenProject = MavenProjectsManager.getInstance(module.getProject()).findProject(module);
if (mavenProject != null) {
setPathsToDefault(mavenProject, module, facetConfiguration);
if (hasApkSourcesDependency(mavenProject)) {
configureAaptCompilation(mavenProject, module, facetConfiguration, true);
}
}
}
public static boolean hasApkSourcesDependency(MavenProject mavenProject) {
for (MavenArtifact artifact : mavenProject.getDependencies()) {
if (AndroidMavenUtil.APKSOURCES_DEPENDENCY_TYPE.equals(artifact.getType())) {
return true;
}
}
return false;
}
}
@@ -16,6 +16,7 @@
package org.jetbrains.android.maven;
import com.intellij.openapi.module.Module;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -23,6 +24,8 @@ import org.jetbrains.annotations.Nullable;
* @author Eugene.Kudelevsky
*/
public class AndroidMavenUtil {
@NonNls public static final String APKSOURCES_DEPENDENCY_TYPE = "apksources";
private AndroidMavenUtil() {
}