Ed M
06/02/2018, 4:39 PMxenoterracide
06/03/2018, 10:35 AMpublic class JavaLib implements Plugin<Project> {
@Override
public void apply( Project project ) {
project.getPluginManager().apply( JavaLibraryPlugin.class );
DependencyHandler deps = project.getDependencies();
deps.add( TEST_IMPL, String.join( D, Junit.G, Junit.Api.A ) );
deps.add( TEST_RUN, String.join( D, Junit.G, Junit.Engine.A ) );
deps.add( TEST_IMPL, String.join( D, AssertJ.G, AssertJ.A ) );
project.getTasks().withType( Test.class, task -> {
task.useJUnitPlatform();
task.testLogging( log -> <http://log.info|log.info>( info -> info.getEvents().add( TestLogEvent.PASSED ) ) );
task.reports( reports -> {
reports.getJunitXml().setEnabled( false );
reports.getHtml().setEnabled( false );
} );
} );
project.getTasks().withType( JavaCompile.class, task -> {
task.getOptions().getCompilerArgs().add( "-parameters" );
} );
project.getConvention().configure( JavaPluginConvention.class, conv -> {
XenoExtension xeno = project.getExtensions().getByType( XenoExtension.class );
xeno.setSourceSets( Collections.singleton( conv.getSourceSets().findByName( "main" ) ) );
} );
}
}
even put it after JavaLibraryPlugin has been applied isn't helpingEd M
06/03/2018, 3:36 PMproject.getExtensions.configure(JavaPluginConvention.class, [...]);
xenoterracide
06/04/2018, 3:01 AMCaused by: org.gradle.api.UnknownDomainObjectException: Extension of type 'JavaPluginConvention' does not exist. Currently registered extension types: [ExtraPropertiesExtension, XenoExtension, DefaultArtifactPublicationSet, ReportingExtension, IdeaModel, CheckstyleExtension, SpotBugsExtension, StandardDependencyManagementExtension]
at org.gradle.api.internal.plugins.ExtensionsStorage.getHolderByType(ExtensionsStorage.java:88)
at org.gradle.api.internal.plugins.ExtensionsStorage.configureExtension(ExtensionsStorage.java:71)
at org.gradle.api.internal.plugins.DefaultConvention.configure(DefaultConvention.java:217)
at org.gradle.api.internal.plugins.DefaultConvention.configure(DefaultConvention.java:212)
at com.xenoterracide.gradle.plugin.XenoCodeQualityPlugin.apply(XenoCodeQualityPlugin.java:26)
at com.xenoterracide.gradle.plugin.XenoCodeQualityPlugin.apply(XenoCodeQualityPlugin.java:18)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:42)
at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:50)
at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:164)
at org.gradle.api.internal.plugins.DefaultPluginManager.access$200(DefaultPluginManager.java:47)
at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:252)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:144)
... 56 more
Ed M
06/04/2018, 3:44 AMxenoterracide
06/04/2018, 4:11 AMEd M
06/04/2018, 4:56 AMxenoterracide
06/04/2018, 2:18 PMproject.afterEvaluate( p1 -> {
ExtensionContainer ext = p1.getExtensions();
XenoExtension xeno = ext.getByType( XenoExtension.class );
if ( xeno.getSourceSets().isEmpty() ) {
JavaPluginConvention plugin = p1.getConvention().getPlugin( JavaPluginConvention.class );
SourceSet main = plugin.getSourceSets().findByName( SourceSet.MAIN_SOURCE_SET_NAME );
xeno.setSourceSets( Collections.singleton( main ) );
}
ext.getByType( SpotBugsExtension.class ).setSourceSets( xeno.getSourceSets() );
});
but when I do this, or anything else that doesn't end up with the java convention stacktrace missing, spot bugs extension ends up with a null sourceset, and thus isn't getting scanned...Ed M
06/04/2018, 2:57 PM