11package org.moe.gradle.tasks
22
33import org.gradle.api.GradleException
4- import org.gradle.api.Task
54import org.gradle.api.file.ConfigurableFileCollection
65import org.gradle.api.file.FileCollection
76import org.gradle.api.plugins.JavaPlugin
@@ -11,6 +10,7 @@ import org.gradle.api.tasks.Internal
1110import org.gradle.api.tasks.Optional
1211import org.gradle.api.tasks.OutputDirectory
1312import org.gradle.api.tasks.SourceSet
13+ import org.gradle.api.tasks.bundling.Jar
1414import org.gradle.api.tasks.compile.JavaCompile
1515import org.moe.gradle.MoePlugin
1616import org.moe.gradle.anns.IgnoreUnused
@@ -63,26 +63,29 @@ open class ClassValidate : AbstractBaseTask() {
6363 this .outputDir = outputDir
6464 }
6565
66- val outputJar : File
66+ val outputJars : ConfigurableFileCollection
6767 @Internal
68- get() = getOutputDir().resolve( " output.jar " )
68+ get() = project.files( getOutputDir().listFiles() )
6969
7070 override fun run () {
7171 // Clean output dir
7272 FileUtils .deleteFileOrFolder(getOutputDir())
7373
74+ val inputFiles = getInputFiles().filter {it.isFile}.map {
75+ it.copyTo(getOutputDir().resolve(it.name))
76+ }
77+
7478 // Run class validator
7579 ClassValidator .process(
76- inputFiles = getInputFiles() .toSet(),
80+ inputFiles = inputFiles .toSet(),
7781 classpath = getClasspathFiles().toSet()
7882 // Add input to classpath
79- + getInputFiles().toSet(),
80- outputDir = getOutputDir().absoluteFile.toPath(),
83+ + inputFiles.toSet()
8184 )
8285 }
8386
8487 @get:Internal
85- lateinit var classesTaskDep : Task
88+ lateinit var jarTaskDep : Jar
8689 private set
8790
8891 @get:Internal
@@ -114,19 +117,19 @@ open class ClassValidate : AbstractBaseTask() {
114117 description = " Validate classes (sourceset: ${sourceSet.name} , mode: ${mode.name} )."
115118
116119 // Add dependencies
117- val classesTaskName: String
118120 val compileJavaTaskName: String
119121 if (SourceSet .MAIN_SOURCE_SET_NAME == sourceSet.name) {
120- classesTaskName = JavaPlugin .CLASSES_TASK_NAME
122+ jarTaskDep = project.tasks.getByName( JavaPlugin .JAR_TASK_NAME ) as Jar
121123 compileJavaTaskName = JavaPlugin .COMPILE_JAVA_TASK_NAME
122124 } else if (SourceSet .TEST_SOURCE_SET_NAME == sourceSet.name) {
123- classesTaskName = JavaPlugin .TEST_CLASSES_TASK_NAME
125+ val testJarTask = project.tasks.register(" testJar" , Jar ::class .java)
126+ testJarTask.configure { it.from(sourceSet.output) }
127+ jarTaskDep = testJarTask.get();
124128 compileJavaTaskName = JavaPlugin .COMPILE_TEST_JAVA_TASK_NAME
125129 } else {
126130 throw GradleException (" Unsupported SourceSet ${sourceSet.name} " )
127131 }
128- classesTaskDep = project.tasks.getByName(classesTaskName)
129- dependsOn(classesTaskDep)
132+ dependsOn(jarTaskDep)
130133
131134 javaCompileTaskDep = moePlugin.getTaskByName(compileJavaTaskName)
132135 // TODO: allow higher than 1.8
@@ -140,6 +143,7 @@ open class ClassValidate : AbstractBaseTask() {
140143 // Update convention mapping
141144 addConvention(CONVENTION_INPUT_FILES ) {
142145 sourceSet.runtimeClasspath.files.toMutableSet().also { jars ->
146+ jars.add(jarTaskDep.archiveFile.get().asFile)
143147 jars.remove(moeSDK.coreJar)
144148 jars.remove(moeExtension.platformJar)
145149 jars.remove(moeSDK.java8SupportJar)
0 commit comments