From 1d6f17859d454052513c49fb3484917adadaeca2 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Mon, 11 Aug 2025 12:50:42 -0700 Subject: [PATCH 1/5] Convert `initProperties` to Copy task instead of default Task --- build.gradle | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/build.gradle b/build.gradle index fc5eb041e0..83412f5526 100644 --- a/build.gradle +++ b/build.gradle @@ -125,32 +125,22 @@ if (!BuildUtils.isIntellij()) { } } -def initPropertiesTask = project.tasks.register("initProperties", Task) { - Task task -> +def initPropertiesTask = project.tasks.register("initProperties", Copy) { + Copy task -> task.group = GroupNames.TEST task.description = "Create test.properties if missing" - task.doLast({ - File testProperties = project.file('test.properties') - File testPropertiesTemplate = project.file('test.properties.template') - - if (!testProperties.exists()) - { - project.copy { - CopySpec copy -> - copy.from(testPropertiesTemplate) - copy.into(project.file(".")) - copy.rename(testPropertiesTemplate.getName(), testProperties.getName()) - copy.filter { String line -> - if (line.startsWith("#!!")) { - return null - } - else { - return line - } - } - } + task.from(project.file('test.properties.template')) + task.into(".") + task.outputs.files(project.file('test.properties')) + task.rename('test.properties.template', 'test.properties') + task.filter { String line -> + if (line.startsWith("#!!")) { + return null } - }) + else { + return line + } + } } project.tasks.register("convertHarToStressXml", JavaExec) { From 63fdb1a851837aa2bacb41197007754ba3b26389 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Fri, 15 Aug 2025 11:48:43 -0700 Subject: [PATCH 2/5] Declare task ordering to avoid input and output conflicts --- data/qc/build.gradle | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data/qc/build.gradle b/data/qc/build.gradle index 38757cafeb..c4d1e9b930 100644 --- a/data/qc/build.gradle +++ b/data/qc/build.gradle @@ -16,6 +16,10 @@ sourceSets { } } +// We declare that these jar file tasks must run after the sample data file task since writeSampleDataFile declares the +// testAutomation/data directory as an input. +def sampleDataFileTask = project.project(BuildUtils.getTestProjectPath(project.gradle)).tasks.named("writeSampleDataFile") + project.tasks.register('validatorJar', Jar) { group = "QC" description = "Builds jar for assay validation" @@ -31,6 +35,7 @@ project.tasks.register('validatorJar', Jar) { 'Built-By': System.getProperty("user.name"), 'Main-Class': 'org.labkey.AssayValidator' } + sampleDataFileTask.get().mustRunAfter(it) } project.tasks.register('transformJar', Jar) { @@ -48,6 +53,7 @@ project.tasks.register('transformJar', Jar) { 'Built-By': System.getProperty("user.name"), 'Main-Class': 'org.labkey.AssayTransform' } + sampleDataFileTask.get().mustRunAfter(it) } project.tasks.register('transformNoopJar', Jar) { @@ -65,6 +71,7 @@ project.tasks.register('transformNoopJar', Jar) { 'Built-By': System.getProperty("user.name"), 'Main-Class': 'org.labkey.AssayTransformNoOp' } + sampleDataFileTask.get().mustRunAfter(it) } project.tasks.register('transformWarningJar', Jar) { @@ -82,6 +89,7 @@ project.tasks.register('transformWarningJar', Jar) { 'Built-By': System.getProperty("user.name"), 'Main-Class': 'org.labkey.AssayTransformWarning' } + sampleDataFileTask.get().mustRunAfter(it) } var jarTask = project.tasks.named('jar') From de0d2d642bd4f73e49569aa9df5f637d56622d5a Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Thu, 21 Aug 2025 17:13:26 -0700 Subject: [PATCH 3/5] Restore onlyIf condition for `initProperties` to see if that fixes some things for TC. --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 83412f5526..ec5f085f53 100644 --- a/build.gradle +++ b/build.gradle @@ -141,6 +141,7 @@ def initPropertiesTask = project.tasks.register("initProperties", Copy) { return line } } + task.onlyIf{ !project.file('test.properties').exists() } } project.tasks.register("convertHarToStressXml", JavaExec) { From 18738f29bded5afab555784656405819c2176493 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Mon, 15 Sep 2025 15:47:47 -0700 Subject: [PATCH 4/5] Switch the order of checking for the deploy/modules directory since Gradle will create the build/deploy/modules directory even if empty --- src/org/labkey/test/TestFileUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/labkey/test/TestFileUtils.java b/src/org/labkey/test/TestFileUtils.java index a860e0481e..c1f37d3c38 100644 --- a/src/org/labkey/test/TestFileUtils.java +++ b/src/org/labkey/test/TestFileUtils.java @@ -214,11 +214,11 @@ public static File getModulesDir() { if (_modulesDir == null) { - _modulesDir = new File(getDefaultDeployDir(), "modules"); + // Module root when deploying from embedded distribution + _modulesDir = new File(getDefaultDeployDir(), "embedded/modules"); if (!_modulesDir.isDirectory()) { - // Module root when deploying from embedded distribution - _modulesDir = new File(getDefaultDeployDir(), "embedded/modules"); + _modulesDir = new File(getDefaultDeployDir(), "modules"); } } return _modulesDir; From 5a66243c286df237c4807e9a15862fd17f262635 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Mon, 22 Sep 2025 08:15:08 -0700 Subject: [PATCH 5/5] Use default description rather than dist extension description prop, which has not been removed --- distributions/teamcity/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distributions/teamcity/build.gradle b/distributions/teamcity/build.gradle index 128edeb44c..f499b8e7ef 100644 --- a/distributions/teamcity/build.gradle +++ b/distributions/teamcity/build.gradle @@ -12,7 +12,7 @@ plugins { if (!BuildUtils.isOpenSource(project)) apply plugin: 'org.labkey.build.applyLicenses' -dist.description = "Distribution that includes all modules, for use in the continuous integration LabKey Server instance" +description = "Distribution that includes all modules, for use in the continuous integration LabKey Server instance" project.tasks.register("distribution", ModuleDistribution) { ModuleDistribution dist ->