Building for production, gradle error: could not determine dependencies

LabKey Support Forum (Inactive)
Building for production, gradle error: could not determine dependencies Matt V  2017-10-13 09:49
Status: Closed
 
Following this guide: https://www.labkey.org/Documentation/wiki-page.view?name=productionBuilds

If I run a simple ./gradlew deployApp (optionally cleanBuild), then everything goes smoothly. Naturally I run into the following error on the web server:
    Configuration Error Detected at LabKey Server Startup
    This server does not appear to be compiled for production mode
       org.labkey.api.util.ConfigurationException: This server does not appear to be compiled for production mode
       at org.labkey.api.module.ModuleLoader.verifyProductionModeMatchesBuild(ModuleLoader.java:430)
       at org.labkey.api.module.ModuleLoader.doInit(ModuleLoader.java:329)
       at org.labkey.api.module.ModuleLoader.init(ModuleLoader.java:244)
       ...


However, if I add the -PdeployMode=prod flag I encounter into the following error:

$ ./gradlew deployApp -PdeployMode=prod --stacktrace
:buildSrc:compileJava NO-SOURCE
:buildSrc:compileGroovy NO-SOURCE
:buildSrc:processResources NO-SOURCE
:buildSrc:classes UP-TO-DATE
:buildSrc:jar UP-TO-DATE
:buildSrc:assemble UP-TO-DATE
:buildSrc:compileTestJava NO-SOURCE
:buildSrc:compileTestGroovy NO-SOURCE
:buildSrc:processTestResources NO-SOURCE
:buildSrc:testClasses UP-TO-DATE
:buildSrc:test NO-SOURCE
:buildSrc:check UP-TO-DATE
:buildSrc:build UP-TO-DATE

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':server:modules:visualization:compressClientLibs'.
> java.lang.RuntimeException: ERROR: Unable to find script file: /build/QA/web/vis/chartWizard/baseChartWizardPanel.js from library: /build/QA/web/source/server/modules/visualization/resources/web/vischart.lib.xml

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.GradleException: Could not determine the dependencies of task ':server:modules:visualization:compressClientLibs'.
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:67)
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:55)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.addToTaskGraph(DefaultTaskExecutionPlan.java:139)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.addTasks(DefaultTaskGraphExecuter.java:101)
        at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:47)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
        at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
        at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
        at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36)
        at org.gradle.initialization.DefaultGradleLauncher$CalculateTaskGraphAction.execute(DefaultGradleLauncher.java:246)
        at org.gradle.initialization.DefaultGradleLauncher$CalculateTaskGraphAction.execute(DefaultGradleLauncher.java:243)
        at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:172)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
        at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:49)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:31)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: ERROR: Unable to find script file: /build/QA/web/vis/chartWizard/baseChartWizardPanel.js from library: /build/QA/web/source/server/modules/visualization/resources/web/vischart.lib.xml
        at org.labkey.gradle.task.ClientLibsCompress.parseXmlFile(ClientLibsCompress.groovy:197)
        at org.labkey.gradle.task.ClientLibsCompress$_getImporterMap_closure1.doCall(ClientLibsCompress.groovy:61)
        at org.labkey.gradle.task.ClientLibsCompress.getImporterMap(ClientLibsCompress.groovy:59)
        at org.labkey.gradle.task.ClientLibsCompress_Decorated.getImporterMap(Unknown Source)
        at org.labkey.gradle.task.ClientLibsCompress_Decorated$getImporterMap$0.callCurrent(Unknown Source)
        at org.labkey.gradle.task.ClientLibsCompress.getInputFiles(ClientLibsCompress.groovy:99)
        at org.labkey.gradle.task.ClientLibsCompress_Decorated.getInputFiles(Unknown Source)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.TaskPropertyInfo$4.create(TaskPropertyInfo.java:99)
        at org.gradle.util.SingleMessageLogger.whileDisabled(SingleMessageLogger.java:217)
        at org.gradle.api.internal.project.taskfactory.TaskPropertyInfo.getValue(TaskPropertyInfo.java:97)
        at org.gradle.api.internal.project.taskfactory.TaskClassValidator$FutureValue.call(TaskClassValidator.java:62)
        at org.gradle.util.GUtil.uncheckedCall(GUtil.java:402)
        at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext.add(BuildDependenciesOnlyFileCollectionResolveContext.java:72)
        at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext.add(BuildDependenciesOnlyFileCollectionResolveContext.java:84)
        at org.gradle.api.internal.tasks.TaskPropertyFileCollection.visitContents(TaskPropertyFileCollection.java:53)
        at org.gradle.api.internal.file.CompositeFileCollection.visitDependencies(CompositeFileCollection.java:166)
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:88)
        at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmpyEdges.getNodeValues(CachingDirectedGraphWalker.java:202)
        at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:112)
        at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:64)
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.doResolve(CachingTaskDependencyResolveContext.java:76)
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:65)
        ... 57 more
Caused by: java.lang.RuntimeException: ERROR: Unable to find script file: /build/QA/web/vis/chartWizard/baseChartWizardPanel.js from library: /build/QA/web/source/server/modules/visualization/resources/web/vischart.lib.xml
        at org.labkey.gradle.task.ClientLibsCompress$XmlImporter.startElement(ClientLibsCompress.groovy:353)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
        at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
        at org.labkey.gradle.task.ClientLibsCompress.parseXmlFile(ClientLibsCompress.groovy:192)
        ... 79 more


BUILD FAILED

Adding cleanBuild doesn't fix it. I'm building from a terminal, not within IntelliJ since that's part of our release process. The LabKey source is freshly downloaded from SVN, then our modules added, then this whole process kicks off. Not sure what to try next, any ideas?
 
 
Susan Hert responded:  2017-10-13 11:12
Can you tell me a little more about your directory structure? Am I interpreting this correctly that you have your LabKey enlistment under a directory called /build/QA/web

I think perhaps the "web" directory is causing a problem. We expect "web" to be one of the source directories for files referenced in the .lib.xml files. If you rename that directory to something other than "web" or "webapp", I believe you will have better results.

Susan
 
Matt V responded:  2017-10-13 11:44
Hi Susan,

The build script checks out the source from SVN (https://hedgehog.fhcrc.org/tor/stedi/branches/release17.2/) to /build/<environment>/web/source. In this case, <environment> is QA. Our modules are next cloned in. Then, the script runs the gradle wrapper from within that source directory, /build/QA/webapp/source. For completeness, there's an equivalent /build/<env>/database directory for db related items (no issues here).

I quickly swapped the "web" directory to "webapp" and the same error persists. Still builds fine without the production flag. Attempting to build manually from that directory

When I look more closely at the directories, it appears that my dev copy in another directory has quite a few files that are missing from the freshly checked out SVN version. For example, /server/modules/core/resources/scripts/labkey/Filter.js (in dev, not in svn checkout). There are roughly 70 files missing or incomplete like this.

Maybe I'm missing a step for a branch new build since this doesn't ever hit IntelliJ? I don't see them when browsing the svn trunk either.
 
Susan Hert responded:  2017-10-13 11:50
"webapp" will have the same problems as we use that as a source directory as well. Try renaming to something like "website" and I believe you will have better results.

Susan
 
Matt V responded:  2017-10-13 12:50
Oops, misread your previous post. Changing it to anything except "web" and "webapp" did the trick. Thanks!
 
Susan Hert responded:  2017-10-14 14:13
Great! I'm glad that worked.

I also plan to have a fix for this in the next release of the gradle plugins jar (1.2.1), which should be coming out soon.