Как мне создать проект gradle root с несколькими приложениями, использующими одну и ту же библиотеку.Я хочу закончить файлами tar и zip, содержащими:
RootProject/
bin/
Command1
Command2
...
lib/
Library.jar
..
Я создал корневой проект gradle, подпроект библиотеки и несколько подпроектов приложений:
RootProject/
settings.gradle
build.gradle
common.gradle
Library/
build.gradle
src/main/java/Library.java
Command1/
build.gradle
src/main/java/Command1.java
Command2/
build.gradle
src/main/java/Command2.java
Мой текущий корневой проект build.gradle:
apply plugin: 'base' // To add "clean" task to the root project.
allprojects {
repositories {
mavenCentral();
}
}
subprojects {
apply plugin: 'java'
group = 'edu.csusb.ecs.gmailsettings'
version = '1.0-SNAPSHOT'
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.10'
}
}
task build(type: Copy) {
dependsOn subprojects.build
from subprojects.collect { it.tasks.withType(Jar) }
into project.rootProject.buildDir.toString() + "/libs"
}
task clean(group:project.rootProject.ext.group, type: Delete, description:"clean jars from subprojects") {
delete fileTree(project.buildDir).include('**/*')
}
приводит к ошибке
org.gradle.tooling.BuildException: Не удалось запустить действие сборки с использованием распределения Gradle 'https://services.gradle.org/distributions/gradle-4.5.1-bin.zip'. в org.gradle.tooling.internal.consumer.ExceptionTransformer.transform (ExceptionTransformer.java:51) в org.gradle.tooling.internal.consumer.ExceptionTransformer.transform (ExceptionTransformer.java:29) в орг.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure (ResultHandlerAdapter.java:41) по адресу org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor $ 1 $ 1.run (DefaultAsyncConsdlegraj).concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute (ExecutorPolicy.java:63) в org.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run (управляемыйExecutorImpl.java:46) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:6grac.gr) или в.ThreadFactoryImpl $ ManagedThreadRunnable.run (ThreadFactoryImpl.java:55) в java.lang.Thread.run (Thread.java:748) в org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult (BlockingResultHandler).org.gradle.tooling.internal.consumer.DefaultBuildActionExecuter.run (DefaultBuildActionExecuter.java:60) в org.netbeans.gradle.model.GenericModelFetcher.getModels (GenericModelFetcher.java:168) в org.NbGradle18ModelLoader $ ProjectModelFetcher.getModels (NbGradle18ModelLoader.java:379) в org.netbeans.gradle.project.model.NbGradle18ModelLoader.loadModels (NbGradle18ModelLoader.java:68) в org.netbeans.gradle.project.model.DefaultGradleModelLoader.loadModelWithProgress (DefaultGradleModelLoader.Java: 559) на org.netbeans.gradle.project.model.DefaultGradleModelLoader.access $ 1600 (DefaultGradleModelLoader.java:64) в org.netbeans.gradle.project.model.DefaultGradleModelLoader $ 6.run (DefaultGradleModelLoader.java:419) в org.netbera.runNonBlockingGradleTask (GradleDaemonManager.java:35) по адресу org.netbeans.gradle.project.tasks.GradleDaemonManager.access $ 100 (GradleDaemonManager.java:22) по адресу org.netbeans.gradle.project.tasks.GavadleDext.MessagerMacGameMaeagerMe125) в org.jtrim.concurrent.AbstractTaskExecutorService $ FunctionWrapper.execute (AbstractTaskExecutorService.java:270) в org.jtrim.concurrent.AbstractTaskExecutorService $ TaskOfAbstractExecutor.erk.tm.execute (Tasks.java:342) в org.jtrim.concurrent.SingleThreadedExecutor $ QueuedItem.runTask (SingleThreadedExecutor.java:919) в org.jtrim.concurrent.SingleThreadedExecutor $ QueuedItem.jcess $ 12008) в org.jtrim.concurrent.SingleThreadedExecutor $ Impl $ Worker.executeTask (SingleThreadedExecutor.java:815) в org.jtrim.concurrent.SingleThreadedExecutor $ Impl $ Worker.processQueue (SingleThreadedEx8urj.rijava) jj..SingleThreadedExecutor $ Impl $ Worker.run (SingleThreadedExecutor.java:861) в org.jtrim.concurrent.SingleThreadedExecutor $ Impl $ 1.run (SingleThreadedExecutor.java:453) в java.lang.Thread.run (Thread.java:7)Вызывается: org.gradle.internal.exceptions.LocationAwareException: файл сборки '/Users/000017913/Development/GmailSettings/build.gradle' строка: 20 Возникла проблема при оценке корневого проекта 'GmailSettings'.вorg.gradle.initialization.DefaultExceptionAnalyser.transform (DefaultExceptionAnalyser.java:74) в org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser.transform (MultipleBuildFailuresExceptionAnalyser.java:47.Exceptionв org.gradle.initialization.DefaultGradleLauncher.doBuildStages (DefaultGradleLauncher.java:137) в org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild (DefaultGradleLauncher.java:104) .ontrolBBBJava: 87) в org.gradle.internal.invocation.GradleBuildController $ 2.call (GradleBuildController.java:84) в org.gradle.internal.work.DefaultWorkerLeaseService.withLocks (DefaultWorkerLeaseService.jternalg5).invocation.GradleBuildController.doBuild (GradleBuildController.java:100) в org.gradle.internal.invocation.GradleBuildController.configure (GradleBuildController.java:84) в org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run (ClientProvidedBuildActionRunner.java:64) в org.gradle.launcher.exec.ChainingBuildActionRunner.uun.gradle.launcher.exec.ChainingBuildActionRunner.run (ChainingBuildActionRunner.java:35) в org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run (ValidatingBuildActionRunner.java:32Run.Ang.exe) в org.Выполнить (RunAsBuildOperationBuildActionRunner.java:43) в org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:336) в org.gradle.inexв org.gradle.internal.progress.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:199) в org.gradle.internal.progress.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:110) в org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run (RunAsBuildOperationBuildActionRunner.java:40) в org.gradle.tooling.internal.pl)в org.gradle.launcher.exec.InProcessBuildActionExecuter.execute (InProcessBuildActionExecuter.java:49) в org.gradle.launcher.exec.InProcessBuildActionExecuter.execute (InProcessBuildActionExecuter.java:32) в org.exeUter.(BuildTreeScopeBuildActionExecuter.java:39) в org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute (BuildTreeScopeBuildActionExecuter.java:25) в org.gradle.tooling.internal.provider.ildavaExugradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute (ContinuousBuildActionExecuter.java:53) в org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute (ServicesSetupBuildActionExecuter.java:57) в org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute (ServicesSetupBuildActionExecuter.java:32)36) в org.gradle..internal.provider.ParallelismConfigurationBuildActionExecuter.execute (ParallelismConfigurationBuildActionExecuter.java:29) вorg.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute (StartParamsValidatingActionExecuter.java:64) в org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute.provider.SessionFailureReportingActionExecuter.execute (SessionFailureReportingActionExecuter.java:59) в org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute (SessionFailureReportingActionExecu.AecuGame.Lip.Amp.Amp.LoG.Omp.Omp.LoW.Omp.Omp.LoT.Omp.LoT.Omp.LoT.Java: 45) в org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute (SetupLoggingActionExecuter.java:30) в org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild (ExecuteBuild.java:67 at).gradle.launcher.daemon.server.exec.BuildCommandOnly.execute (BuildCommandOnly.java:36) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute (WatchForDisconnection.java:37) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommand:122) в org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute (ResetDeprecationLogger.java:26) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.g):.gradle.launcher.daemon..daemon.server.exec.ForwardClientInput $ 2.call (ForwardClientInput.java:74) в org.gradle.launcher.daemon.server.exec.ForwardClientInput $ 2.call (ForwardClientInput.java:72) в org.gradle.util.Swapper.swap (Swapper.java:38) в org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute (ForwardClientInput.java: 72) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute (LogAndCjckHe55)на org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) на org.gradle.launcher.daemon.server.exec.LogToClient.doBuild (LogToClient.java:62g) или.launcher.daemon.server.exec.BuildCommandOnly.execute (BuildCommandOnly.java:36) в org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org..server.exec.EstablishBuildEnvironment.doBuild (EstablishBuildEnvironment.java:82) в org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute (BuildCommandOnly.java:36) в org.gradle.launcver.apimon.DaemonCommandExecution.proceed (DaemonCommandExecution.java:122) в org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy $ 1.run (StartBuildOrRespondWithBusy.java:50) в org.gradle.launcher.daemon.server.DaemonStateCoordinator $ 1.run (DaemonStateCoordinator.java:295) в org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute) Execol: atecutororg.gradle.internal.concurrent.ManagedExecutorImpl $ 1.run (ManagedExecutorImpl.java:46) в org.gradle.internal.concurrent.ThreadFactoryImpl $ ManagedThreadRunnable.run (ThreadFactoryImpl.java:55) вызывается из-за: Возникла проблема при оценке корневого проекта 'GmailSettings'.в org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory $ ScriptRunnerImpl.run (DefaultScriptRunnerFactory.java:92) в org.gradle.configuration.DefaultScriptPluginFactory $ ScriptPluginImpl $ 2.run (DefaultScriptPluginFactory) в.org.gradle.configuration.ProjectScriptTarget.addConfiguration (ProjectScriptTarget.java:77) в org.gradle.configuration.DefaultScriptPluginFactory $ ScriptPluginImpl.apply (DefaultScriptPluginFactory.java:209) в org.gradle.conScriptScriptPugin: 61) at org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:336) в org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWavaExg.jpg.exg.internal.progress.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:199) в org.gradle.internal.progress.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:110) в org.gradle.configuration.BuildOavaPluginPluginPluginPluginPluginPluginInв org.gradle.configuration.project.BuildScriptProcessor.execute (BuildScriptProcessor.java:41) в org.gradle.configuration.project.BuildScriptProcessor.execute (BuildScriptProcessor.java:26) в org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate (ConfigureActionsProjectEvaluator.java:34) в org.gradle.configuration.project.LatorcycledojectEvaluEvaluEvaluEEJava: 64) в org.gradle.configuration.project.LifecycleProjectEvaluator.access $ 100 (LifecycleProjectEvaluator.java:34) в org.gradle.configuration.project.LifecycleProjectEvaluator $ ConfigureProject.run (LifecycleProjectEvaluator.java:110) в org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:336) по адресу org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute.gressgressODefaultBuildOperationExecutor.java:199) в org.gradle.internal.progress.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:110) в org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate (LifecycleProjectEvaluator.java:50) в org.gradle.api.internal.project.DefaultProject.evaluate (DefaultProject.java:667) в org.gradle.api.internal.project.DefaultProject.evaluate (DefaultProject.java:136) по адресу org.gradle.execution.TaskPathProjectEvaluator.configure (TaskPathProjectEvaluator.java:35) по адресу org.gradle.execution.TaskPathProjectEvaluator.conator.jpg.выполнить (DefaultBuildOperationExecutor.java:336) в org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute (DefaultBuildOperationExecutor.java:328) в org.gradle.internal.progress.DefaultBuildOperationExecutor.execute (DefaultBuildOperationExecutor.java:199) по адресу org.gradle.internal.progress.DefaultBuildOperationExecutor.run (DefaultBuildOperationExecutor.java:110) по адресу org.gradle.initialization.Defaultildrag.gradle.initialization.DefaultGradleLauncher.doBuildStages (DefaultGradleLauncher.java:126) ... еще 62 Причины: org.gradle.api.InvalidUserDataException: объявление пользовательской задачи сборки при использовании стандартных подключаемых модулей жизненного цикла Gradle недопустимо.в org.gradle.language.base.plugins.LifecycleBasePlugin $ 7.execute (LifecycleBasePlugin.java:142) в org.gradle.language.base.plugins.LifecycleBasePlugin $ 7.execute (LifecycleBasePlugin.java:138) вorg.gradle.internal.java: 204) в org.gradle.api.internal.DefaultDomainObjectCollection.add (DefaultDomainObjectCollection.java:198) в org.gradle.api.internal.DefaultNamedDomainObjectCollection.add (DefaultNamedDomainObjectCollection.javaingrag.ingi) или at)..tasks.DefaultTaskContainer.addTask (DefaultTaskContainer.java:101) в org.gradle.api.internal.tasks.DefaultTaskContainer.create (DefaultTaskContainer.java:81) в org.gradle.api.internal.projecttk.java: 1209) по адресу org.gradle.internal.metaobject.BeanDynamicObject $ MetaClassAdapter.invokeMethod (BeanDynamicObject.java:479) по адресу org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMetynamicgject.grad.obidinternal.metaobject.CompositeDynamicObject.tryInvokeMethod (CompositeDynamicObject.java:98) в org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod (MixInClosurePropertiesAsMethodsDynamicObject.jScriptdleicho.hoj.Dicject.GoD.Oject.GoD.Oject.GoD.Oject.Go.Oject.Go.Oject.Go.Oject.Go.по адресу org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod (AbstractDynamicObject.java:160) по адресу org.gradle.groovy.scripts.BasicScript.invokeMethod (BasicScript.java:83) по build_dycfbq39lch6.wx7/17/139GmailSettings / build.gradle: 20) в org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory $ ScriptRunnerImpl.run (DefaultScriptRunnerFactory.java:90) ... 94 больше