How to generate jar for src/main and src/test using Gradle 7.6?

I am trying to create jar file using Gradle 7.6 version for both src/main and src/test code but no luck yet.

I have tried below code and its creating two different jar in the azure artifacts but missing all dependencies required for src/test .

Can someone please help me how to proceed with it ?



plugins {
    id "net.serenity-bdd.serenity-gradle-plugin" version "3.9.4"
    id 'java'
    //   id 'maven-publish'
}

defaultTasks 'clean', 'test', 'aggregate'

repositories {
    mavenCentral()

    maven {
        url 'https://pkgs.dev.azure.com/${ORG}/_packaging/${PROJECT}/maven/v1'
        credentials {
            username "AZURE_ARTIFACTS"
            password ""
        }
    }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

ext {
    slf4jVersion = '1.7.7'
    serenityCoreVersion = '3.9.4'
    junitVersion = '5.9.2'
    assertJVersion = '3.24.2'
    lombokVersion = '1.18.26'
    logbackVersion = '1.4.7'
}

dependencies {


    implementation "com.specsavers:serenity-junit5:1.0.0"
    "net.serenity-bdd:serenity-core:${serenityCoreVersion}"
    "net.serenity-bdd:serenity-junit5:${serenityCoreVersion}"
    "net.serenity-bdd:serenity-screenplay-webdriver:${serenityCoreVersion}"
    "net.serenity-bdd:serenity-ensure:${serenityCoreVersion}"
    "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
    "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
    "org.assertj:assertj-core:${assertJVersion}"
    "org.projectlombok:lombok:${lombokVersion}"
    "ch.qos.logback:logback-classic:${logbackVersion}"


}

test {
    useJUnitPlatform()
    testLogging.showStandardStreams = true
    systemProperties System.getProperties()
}

gradle.startParameter.continueOnFailure = true

serenity {
    reports = ["single-page-html"]
    testRoot = "starter"
}

test.finalizedBy(aggregate)

task testJar(type: Jar, dependsOn: testClasses) {
    getArchiveClassifier().set('sources')
    from sourceSets.main.allSource
    from sourceSets.test.output
}

publishing {

    publications {
        maven(MavenPublication) {
            version = "1.0.0"
            artifactId = "serenity-junit5"
            groupId = "com.org"
            artifact testJar
        }
        maven(MavenPublication) {
            version = "1.0.0"
            artifactId = "serenity-junit5-tests"
            groupId = "com.org"
            artifact testJar
        }
    }


    repositories {
        maven {
            credentials {
                username = "AZURE_ARTIFACTS"
                password = ""
            }

            url = "https://pkgs.dev.azure.com/${ORG}/_packaging/${Project}/maven/v1"
        }
    }
}

It’s a bit unclear what you try to do.
It seems you try to create a jar with the main sources and the compiled tests in them.

Also you configure the same publication twice, so the second configuration should overwrite the first.

Also, what dependencies would you expect where? You are just publishing a pure artifact.