https://kotlinlang.org logo
Title
e

Ed M

06/02/2018, 4:39 PM
looks like you haven't applied either the kotlin or the java plugins
x

xenoterracide

06/03/2018, 10:35 AM
yes, I guess I'm trying to Optionally configure it with a default if java has already been configured
public 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 helping
e

Ed M

06/03/2018, 3:36 PM
I think you have to go through the extensions block, let me check
try doing:
project.getExtensions.configure(JavaPluginConvention.class, [...]);
x

xenoterracide

06/04/2018, 3:01 AM
no, that's not doing it either
Caused 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
e

Ed M

06/04/2018, 3:44 AM
JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class); that’s how the java library plugin configures the java plugin
x

xenoterracide

06/04/2018, 4:11 AM
just results in the same it's not there yet.. I feel like this is definately some kind of timing issue... how do I configure my plugin post configuring of the java convention, such that it can configure the other plugins
e

Ed M

06/04/2018, 4:56 AM
oh, i think i get what you’re saying, if you wrap that block in a project.afterEvaluate block, you should get what you want I think
x

xenoterracide

06/04/2018, 2:18 PM
when I do that the spotbugs sourcset still ends up empty, that code has already been called... though maybe what I need to do, is put all that in one place...
see my plugin is supposed to configure the spotbugs plugin...
project.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...
e

Ed M

06/04/2018, 2:57 PM
hmm.. i’m not sure then, i’m out of ideas 😞