@Override public CompileResult compileJava() throws IOException { return this.compileJava(false); }
@Override public CompileResult compileTestJava() throws IOException { return this.compileTestJava(false); }
AndroidSupport(final GradleProject project) { this.project = project; this.apiVersion = project.getAndroidApiVersion(); this.modelVersion = project.getAndroidModelVersion(); }
void parseAndroidProject(AndroidProject androidProject) throws IOException { JavaCompileOptions javaCompileOptions = androidProject.getJavaCompileOptions(); this.project.setCompileSource(javaCompileOptions.getSourceCompatibility()); this.project.setCompileTarget(javaCompileOptions.getTargetCompatibility()); if (isNull(this.project.getOutput())) { File buildDir = androidProject.getBuildFolder().getCanonicalFile(); String build = Joiner.on(File.separator).join(buildDir, INTERMEDIATE_DIR, CLASSES_DIR, DEBUG_DIR); this.project.setOutput(project.normalize(build)); if (isNull(this.project.getTestOutput())) { File buildDir = androidProject.getBuildFolder().getCanonicalFile(); String build = Joiner.on(File.separator) .join(buildDir, INTERMEDIATE_DIR, CLASSES_DIR, TEST_DIR, DEBUG_DIR); this.project.setTestOutput(this.project.normalize(build)); this.project.getSources().addAll(androidSources.getOrDefault(SOURCES_KEY, new HashSet<>())); this.project.getResources().addAll(androidSources.getOrDefault(RESOURCES_KEY, new HashSet<>())); this.project .getTestSources() .addAll(androidSources.getOrDefault(TEST_SOURCES_KEY, new HashSet<>())); this.project .getTestResources() .addAll(androidSources.getOrDefault(AndroidSupport.TEST_RESOURCES_KEY, new HashSet<>())); this.project.getDependencies().addAll(dependencies); if (this.project.getSources().isEmpty()) { File file =
private void prepareCompileAndroidTestJavaV2() { ProjectConnection connection = this.project.getProjectConnection(); try { BuildLauncher buildLauncher = connection.newBuild(); String genTestTask = this.project.getName() + genUnitTestTaskName; String genAndroidTestTask = this.project.getName() + genAndroidTestTaskName; buildLauncher.forTasks(genTestTask, genAndroidTestTask).run(); int size = this.project.getDependencies().size(); String aar = Joiner.on(File.separator) .join(this.project.getProjectRoot(), BUILD_DIR, INTERMEDIATE_DIR, EXPLODED_DIR); List<File> jars = FileUtils.collectFiles(new File(aar), EXT_JAR); for (File jar : jars) { addAAR(jar); } int after = this.project.getDependencies().size(); if (size != after) { CachedASMReflector.getInstance().createClassIndexes(jars); this.project.resetCachedClasspath(); } } finally { connection.close(); } }
build = Joiner.on(File.separator).join(buildDir, "classes", "java", "main"); this.output = this.normalize(build); build = Joiner.on(File.separator).join(buildDir, "classes", "java", "test"); this.testOutput = this.normalize(build); final Set<ProjectDependency> dependencies = this.analyzeDependencies(ideaModule); final Map<String, Set<File>> sources = this.searchProjectSources(ideaModule); final String buildDir = new File(this.getProjectRoot(), "build").getCanonicalPath(); String build = Joiner.on(File.separator).join(buildDir, "classes", "main"); if (nonNull(gradleVersion) && gradleVersion.compareTo(new ComparableVersion("4.0")) >= 0) { build = Joiner.on(File.separator).join(buildDir, "classes", "java", "main"); this.output = this.normalize(build); final String buildDir = new File(this.getProjectRoot(), "build").getCanonicalPath(); String build = Joiner.on(File.separator).join(buildDir, "classes", "test"); if (nonNull(gradleVersion) && gradleVersion.compareTo(new ComparableVersion("4.0")) >= 0) { build = Joiner.on(File.separator).join(buildDir, "classes", "java", "test"); this.testOutput = this.normalize(build); for (final ProjectDependency projectDependency : this.getDependencies()) { log.debug("{} {}", projectDependency.getScope(), projectDependency.getId());
@Before public void setUp() throws Exception { if (this.project == null) { System.setProperty("meghanada.test", "true"); this.projectRoot = new File("./").getCanonicalFile(); // this.projectRoot = new File("./").getCanonicalFile(); this.projectRootPath = this.projectRoot.getCanonicalPath(); this.project = new GradleProject(projectRoot); String tmpdir = System.getProperty("java.io.tmpdir"); File tmpParent = new File(tmpdir); if (!tmpParent.exists() && !tmpParent.mkdirs()) { log.warn("fail create tmpdir"); } final File tempDir = Files.createTempDir(); tempDir.deleteOnExit(); final String path = tempDir.getCanonicalPath(); System.setProperty(TEMP_PROJECT_SETTING_DIR, path); } }
private void parseIdeaModule(final IdeaModule ideaModule) throws IOException { final org.gradle.tooling.model.GradleProject gradleProject = ideaModule.getGradleProject(); String name = convertName(gradleProject.getPath()); if (nonNull(name) && !name.isEmpty()) { this.name = name; } final AndroidProject androidProject = AndroidSupport.getAndroidProject(this.rootProject, gradleProject); if (nonNull(androidProject)) { Set<ProjectDependency> projectDependencies = analyzeDependencies(ideaModule); this.dependencies.addAll(projectDependencies); // parse android this.isAndroidProject = true; this.androidApiVersion = androidProject.getApiVersion(); this.androidModelVersion = androidProject.getModelVersion(); log.info( "detect android project {}. api {} model {}", name, androidApiVersion, androidModelVersion); System.setProperty("meghanada.android.project", "true"); System.setProperty("meghanada.android.project.name", name); final AndroidSupport androidSupport = new AndroidSupport(this); androidSupport.parseAndroidProject(androidProject); } else { // normal this.parseIdeaModule(gradleProject, ideaModule); } }
private void addAAR(File jar) { String pkg = jar.getParentFile().getParentFile().getParentFile().getParentFile().getName(); String name = jar.getParentFile().getParentFile().getParentFile().getName(); String id = pkg + '.' + name; String version = jar.getParentFile().getParentFile().getName(); ProjectDependency projectDependency = new ProjectDependency(id, DEFAULT_SCOPE, version, jar, ProjectDependency.Type.JAR); this.project.getDependencies().add(projectDependency); }
void prepareCompileAndroidJava() { ProjectConnection connection = this.project.getProjectConnection(); try { BuildLauncher buildLauncher = connection.newBuild(); String genTask = this.project.getName() + this.genSourceTaskName; buildLauncher.forTasks(genTask).run(); int size = this.project.getDependencies().size(); String aar = Joiner.on(File.separator) .join(this.project.getProjectRoot(), BUILD_DIR, INTERMEDIATE_DIR, EXPLODED_DIR); List<File> jars = FileUtils.collectFiles(new File(aar), EXT_JAR); for (File jar : jars) { addAAR(jar); } int after = this.project.getDependencies().size(); if (size != after) { CachedASMReflector.getInstance().createClassIndexes(jars); this.project.resetCachedClasspath(); } } finally { connection.close(); } }
@SuppressWarnings("CheckReturnValue") public static void setupProject(boolean useCache) throws Exception { if (useCache) { System.setProperty("meghanada.source.cache", "true"); } else { System.setProperty("meghanada.source.cache", "false"); } if (project == null) { final File tempDir = Files.createTempDir(); tempDir.deleteOnExit(); final String path = tempDir.getCanonicalPath(); System.setProperty(TEMP_PROJECT_SETTING_DIR, path); log.info("create database {}", path); // replace tmp File f = new File("./").getCanonicalFile(); Project newProject = new GradleProject(f); project = newProject.parseProject(f, f).mergeFromProjectConfig(); } Config config = Config.load(); if (useCache) { config.update("source-cache", true); } else { config.update("source-cache", false); } log.info("finish setupProject"); }
switch (targetFile) { case Project.GRADLE_PROJECT_FILE: project = new GradleProject(projectRoot); break; case Project.MVN_PROJECT_FILE: