Giter VIP home page Giter VIP logo

license-tools-plugin's People

Contributors

chibatching avatar dlackty avatar gfx avatar hisaichi5518 avatar iamutkarshtiwari avatar ikesyo avatar k4zy avatar kazucocoa avatar komatatsu avatar litmon avatar nein37 avatar nonylene avatar nshiba avatar pine avatar shige0501 avatar shiraji avatar shunirr avatar stavfx avatar uzzu avatar vishna avatar w4-steve avatar yaeda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

license-tools-plugin's Issues

カスタムtemplateの追加

概要

checkLicensesタスクによって出力された内容をlicenses.ymlに記載し、
再度checkLicensesのあとにgenerateLicensePageを実行したところ下記のようなエラーが表示された。

* What went wrong:
Execution failed for task ':app:generateLicensePage'.
> File not found: template/licenses/Answers Terms of Service.html

また、licenseをapache2に変更しても、

# Licenses not matched with pom.xml in dependencies:
- artifact: com.crashlytics.sdk.android:answers:1.3.6
  license: Answers Terms of Service
:app:checkLicenses FAILED

と表示され、pom.xml と一致しないと怒られてしまう。

licenses.ymlの一部抜粋

- artifact: com.crashlytics.sdk.android:answers:+
  name: Android SDK Answers
  copyrightHolder: Twitter Inc.
  license: Answers Terms of Service
- artifact: com.crashlytics.sdk.android:crashlytics:+
  name: Android SDK Crashlytics
  copyrightHolder: Twitter Inc.
  license: Crashlytics Terms of Service
- artifact: com.crashlytics.sdk.android:crashlytics-core:+
  name: Android SDK Crashlytics Core
  copyrightHolder: Twitter Inc.
  license: Crashlytics Terms of Service
- artifact: io.fabric.sdk.android:fabric:+
  name: Android SDK Fabric
  copyrightHolder: Twitter Inc.
  license: Fabric Software and Services Agreement

カスタムテンプレートもしくは、pom.xmlとのチェックを一時的に無効にできるオプションがあると解決しそう。

Support local jar libraries

#56 from @rockwillj , supported local jar libraries.
Then I partially reverted it, because the :checkLicense task should not success when missing license. #62

Implement local jar libraries support in other ways.

Missing facebook license template

I have the following entry in my licenses.yml:

- artifact: com.facebook.android:facebook-android-sdk:+
  name: Facebook-Android-SDK
  copyrightHolder: Facebook
  license: Facebook Platform License
  licenseUrl: https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt
  url: https://github.com/facebook/facebook-android-sdk

If I don't skip this entry I get the following error:
File not found: template/licenses/Facebook Platform License.html

I think this happens because there is no template for this license.
Should I add one or is that a complicated process?

Could not resolve all files for configuration ':app:detachedConfiguration3'

When adding firebase library, the following error occurred.

* What went wrong:
Execution failed for task ':app:checkLicenses'.
> Could not resolve all files for configuration ':app:detachedConfiguration3'.
   > Could not find firebase-iid.pom (com.google.firebase:firebase-iid:16.0.0).
     Searched in the following locations:
         https://jcenter.bintray.com/com/google/firebase/firebase-iid/16.0.0/firebase-iid-16.0.0.pom

It was able to be avoided by replacing google and jcenter in repositories.

  • before
allprojects {
    repositories {
        jcenter()
        google()
    }
}
  • after
allprojects {
    repositories {
        google()
        jcenter()
    }
}

License url

It would be nice if the license url could be a part of the .yml and .json generated file (and potentially the .html output, but less likely needed there). It's already available in the pom file, so we can get it at best effort.

I'll put up a PR for this.

Missing licenses, MPL2 and EPL

Hi the author,
I am working on adding new license files for MPL2 and EPL.
Would it be possible you accept my pull request after I finish it?

I can't find licenses.yml in my project. I have created manually but still error.

Task :app:checkLicenses FAILED
:app:checkLicenses (Thread[Daemon worker Thread 24,5,main]) completed. Took 2.176 secs.

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:checkLicenses'.

checkLicenses: missing libraries in licenses.yml

  • Try:
    Run with --debug option to get more log output. Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:checkLicenses'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
    at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
    at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:74)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:143)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:40)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33)
    at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:355)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:219)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
    at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
    at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
    at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:154)
    at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
    at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
    at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
    at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:55)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:50)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
    at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
    at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
    at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
    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:122)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    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:122)
    at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    Caused by: org.gradle.api.GradleException: checkLicenses: missing libraries in licenses.yml
    at com.cookpad.android.licensetools.LicenseToolsPlugin$_apply_closure1.doCall(LicenseToolsPlugin.groovy:59)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:739)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:712)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
    ... 112 more

  • Get more help at https://help.gradle.org

BUILD FAILED in 4s
1 actionable task: 1 executed
08:34:58: Task execution finished 'generateLicensePage'.

updateLicense should remove licenses of unused dependecies

There checkLicense is failing because of unused licenses in the yml

# Libraries listed in /Users/ifc/mercari/mercari-android/app/licenses.yml but not in dependencies:
- artifact: xmlpull:xmlpull:+

- artifact: com.thoughtworks.xstream:xstream:+

- artifact: xpp3:xpp3_min:+

I would expect from the updateLicense task to remove then but it doesn't.

GenerateLicensePage doenst work

Hey guys,
I have two problems.

First, I created the file licenses.yml and run the command updateLicense but when I generated with the
./gradlew generateLicensePage appeared this error:

> Not enough information for:
  - artifact: com.google.firebase:firebase-messaging:17.0.0
    name: firebase-messaging
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)
  - artifact: org.apache.ant:ant:1.8.0
    name: org.apache.tools.ant
    license: #LICENSE#
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)
  - artifact: com.android.support:transition:28.0.0
    name: Android Transition Support Library
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)
  - artifact: org.robolectric:robolectric:3.0
    name: robolectric
    license: #LICENSE#
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)
  - artifact: org.altbeacon:android-beacon-library:2.12.3
    name: android-beacon-library
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)
  - artifact: javax.annotation:jsr250-api:1.0
    name: JSR-250 Common Annotations for the JavaTM Platform
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)
  - artifact: com.firebase:firebase-jobdispatcher:0.8.5
    name: firebase-jobdispatcher
    copyrightHolder: #AUTHOR# (or authors: [...])
    year: #YEAR# (optional)

When I substitute the #AUTHOR to something and after I execute the command the second problem appear:

java.io.FileNotFoundException: File not found: template/licenses/Android Software Development Kit License.html

Android App with 2 Libraries (as part of the project)

Hi there,

I want to check the lib with my current app, which contains of one app module and two library modules.

I added the apply plugin: 'com.cookpad.android.licensetools' to the app build script (and later on to both library modules).

But it still breaks that it cannot find the licenses for the libraries.

Best regards,
DaRolla

Upgrade circleci -> 2.0

Circleci 1.0 will stop working on August 31, 2018. So we need to upgrade our config before that!

Missing CC BY 4.0, SIL OFL 1.1 license template

licenses.yml

- name: Font Awesome Icons
  copyrightHolder: Fonticons, Inc.
  license: CC BY 4.0 License
  licenseUrl: https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/LICENSE.txt
  url: https://github.com/FortAwesome/Font-Awesome
  forceGenerate: true

I ran generateLicensePage.

Execution failed for task ':app:generateLicensePage'.
> java.io.FileNotFoundException: File not found: template/licenses/CC BY 4.0 License.html

There is not enough template for this license?

SIL OFL 1.1 also is same

How to add additional Licenses

Dear all,
we use some content in our app which is a resource file (lottie animation which is a json file). (no Library, aar, jar , etc.)
The content has also a public license which I like to include in the license list.

Is there a way to add manually products with license to the output of the licenseTools ?

Regards
Stephan

Generated YAML-like format is incompatible with YAML

Thanks for providing a great plugin :)

Let me report a bug while parsing a license yaml file.
This plugin failed to load a license.yml like below if a library name includes a column with spaces, i.e. " : "

It seems this plugin generates YAML-like text by manual but it's not a valid YAML.

static String generateLibraryInfoText(LibraryInfo libraryInfo) {

Thanks.

Update 1.0.0

bump up major version because it could be used android-gradle-plugin 3.0.0

changes

  • fix resolving dependencies for project #69
  • add a notice section to mention about configuration #70

Getting Array out of bound exeption

Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
at com.cookpad.android.licensetools.ArtifactId.parse(ArtifactId.java:27)
at com.cookpad.android.licensetools.LicenseToolsPlugin$_loadDependencyLicenses_closure5.doCall(LicenseToolsPlugin.groovy:121)
at com.cookpad.android.licensetools.LicenseToolsPlugin.loadDependencyLicenses(LicenseToolsPlugin.groovy:110)
at com.cookpad.android.licensetools.LicenseToolsPlugin$loadDependencyLicenses$0.callCurrent(Unknown Source)
at com.cookpad.android.licensetools.LicenseToolsPlugin.initialize(LicenseToolsPlugin.groovy:94)
at com.cookpad.android.licensetools.LicenseToolsPlugin$_apply_closure1.doCall(LicenseToolsPlugin.groovy:26)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:656)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:637)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.execute(ExecuteActionsTaskExecuter.java:115)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.execute(ExecuteActionsTaskExecuter.java:109)
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.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:109)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:90)
... 73 more

command was ./gradlew checkLicenses --stacktrace
can someone help me, i am not getting any smarter by reading the trace

how to add the license info for our own library modules?

Here is an example of my projects.
ProjA - app, LibComm, libA, exlibA.aar
ProjB - app, LibComm, LibB, exlibB.aar
ProjC - app, LibComm, LibC, exlibA.aar

The LibComm is an Android library module (https://developer.android.com/studio/projects/android-library) and will be used by ProjA, ProjB, ProjC, etc. This library also uses some open source files (directly include the source files, not use .aar or .jar). Currently, this license plug-in won't list the license information of LibComm in the liceses.yaml file as it has no idea where the license information is.

Is there a way for us to specify the license information for LibComm (I don't prefer the .pom scheme for this as we won't public LibComm to remote/local Marven) so we don't have to manually edit the licenses.yaml file of each project that uses LibComm?

Thank you for creating this awesome license plugin.

Wrap html links in licenses.html css

Hi there,

the html links in the licenses.html are not wrapped if they are too long. So, the webview with the licenses in the android app is scrollable horizontally, which does not look so nice.
It would be great, if the links are wrapped and that the license.html file is only scrollable up and down and fit to the device screen.

Is it possible to add something like this in the css style?

p {
overflow-wrap: break-word;
}

That may solve the problem.

Thank you,

Gabriela

Feature Request: feature for adding/changing licenses by hand

I used a library in NDK that is not listed in build.gradle. And now, I want to add the license to yaml file but received following error:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkLicenses'.
> 1

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

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:checkLicenses'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
        at com.cookpad.android.licensetools.ArtifactId.parse(ArtifactId.java:24)
        at com.cookpad.android.licensetools.LibraryInfo.fromYaml(LibraryInfo.groovy:28)
        at com.cookpad.android.licensetools.LibraryInfo$fromYaml.call(Unknown Source)
        at com.cookpad.android.licensetools.LicenseToolsPlugin.loadLibrariesYaml(LicenseToolsPlugin.groovy:105)
        at com.cookpad.android.licensetools.LicenseToolsPlugin$loadLibrariesYaml.callCurrent(Unknown Source)
        at com.cookpad.android.licensetools.LicenseToolsPlugin.initialize(LicenseToolsPlugin.groovy:94)
        at com.cookpad.android.licensetools.LicenseToolsPlugin$_apply_closure1.doCall(LicenseToolsPlugin.groovy:27)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:681)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:656)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
        ... 27 more

I guess this is because this plugin cannot find the artifactId in build.gradle file.

Now, I want to add license that is not listed in build.gradle. It's impossible to cover all possible ways to import library, right? So, it would be really helpful that we can add licenses by hand and generate HTML based on the information.

Related: https://twitter.com/chibatching/status/954232965223014401

Cannot show OSS version in report.

The report that generates using 'generateLicences' task could not show the OSS version, only showing wildcard.
So it would be a good idea to add configuration options to select either the OSS version or the wildcard version.
If you know the solution to show OSS version, please let me know.

Thanks.

yamlの場所を変更する

歴史的経緯により{project_root}/scripts/license_tools/dataとなっているのでもっとわかりやすい場所に移動する

checkLicenses task failed with Android Gradle Plugin 3.0.0-alpha4

checkLicenses task failed with com.android.tools.build:gradle:3.0.0-alpha4 and gradle wrapper 4.0.
Gradle plugin 2.3.2 with gradle wrapper 4.0 work well.
So, I think gradle plugin 3.0.0 is not compatible with licens-tools-plugin.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkLicenses'.
> Resolving configuration 'releaseCompile' directly is not allowed

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:checkLicenses'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
        at org.gradle.api.internal.tasks.execution.SkipCachedTaskExecuter.execute(SkipCachedTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:60)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:242)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:235)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:224)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:121)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:77)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:102)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:96)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:612)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:567)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:96)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.IllegalStateException: Resolving configuration 'releaseCompile' directly is not allowed
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.assertResolvingAllowed(DefaultConfiguration.java:873)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:434)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getResolvedConfiguration(DefaultConfiguration.java:429)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getResolvedConfiguration(Unknown Source)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.getProperty(BeanDynamicObject.java:228)
        at org.gradle.internal.metaobject.BeanDynamicObject.tryGetProperty(BeanDynamicObject.java:171)
        at org.gradle.internal.metaobject.CompositeDynamicObject.tryGetProperty(CompositeDynamicObject.java:55)
        at org.gradle.internal.metaobject.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:59)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getProperty(Unknown Source)
        at com.cookpad.android.licensetools.LicenseToolsPlugin$_resolveProjectDependencies_closure12.doCall(LicenseToolsPlugin.groovy:286)
        at com.cookpad.android.licensetools.LicenseToolsPlugin.resolveProjectDependencies(LicenseToolsPlugin.groovy:283)
        at com.cookpad.android.licensetools.LicenseToolsPlugin$resolveProjectDependencies$2.callCurrent(Unknown Source)
        at com.cookpad.android.licensetools.LicenseToolsPlugin.loadDependencyLicenses(LicenseToolsPlugin.groovy:110)
        at com.cookpad.android.licensetools.LicenseToolsPlugin$loadDependencyLicenses$1.callCurrent(Unknown Source)
        at com.cookpad.android.licensetools.LicenseToolsPlugin.initialize(LicenseToolsPlugin.groovy:94)
        at com.cookpad.android.licensetools.LicenseToolsPlugin$_apply_closure1.doCall(LicenseToolsPlugin.groovy:26)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:670)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:651)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
        ... 29 more


BUILD FAILED in 1m 38s

Only works for multi-project builds?

The LicenseToolsPlugin.resolveProjectDependencies() method appears to only check for dependencies in subprojects:

project.rootProject.subprojects.findAll { Project p -> !ignoredProjects.contains(p.name) }.each { Project subproject ->

Shouldn't this method also include the rootProject dependencies? The rootProject may have it's own dependencies in addition to those in subprojects. Also, if the rootProject dependencies aren't included, the plugin will only show licenses for multi-project builds, and won't work for projects that only have a single build.gradle file.

How to handle unusual licenses ?

Hi there,

so the 'gradlew checkLicenses' generated this licenses.yml:

- artifact: com.crashlytics.sdk.android:crashlytics:+
  name: Android SDK Crashlytics
  copyrightHolder: Google, Inc
  license: Crashlytics Terms of Service
  licenseUrl: http://try.crashlytics.com/terms/terms-of-service.pdf

But 'gradlew generateLicensePage' throws an error:

Execution failed for task ':app:generateLicensePage'.
> java.io.FileNotFoundException: File not found: template/licenses/Crashlytics Terms of Service.html

Simply removing the line 'license: Crashlytics Terms of Service' didn't help.

Can you please help me?

Cheers,
DaRolla

Not working with gradle plugin 3.0.0-alpha7 and implementation(":module")

We want to use the new implementation() and api() gradle apis that are available in gradle plugin 3.0.0. https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

Unfortunately this raises the following errors:

> Could not resolve all dependencies for configuration ':example:implementationCopy'.
   > Could not resolve project :example-dep.
     Required by:
         project :example
      > Cannot choose between the following configurations of project :example-dep:
          - debugApiElements
          - debugRuntimeElements
          - releaseApiElements
          - releaseRuntimeElements
        All of them match the consumer attributes:
          - Configuration 'debugApiElements':
              - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
              - Found org.gradle.api.attributes.Usage 'for compile' but wasn't required.
          - Configuration 'debugRuntimeElements':
              - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
              - Found org.gradle.api.attributes.Usage 'for runtime' but wasn't required.
          - Configuration 'releaseApiElements':
              - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
              - Found org.gradle.api.attributes.Usage 'for compile' but wasn't required.
          - Configuration 'releaseRuntimeElements':
              - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
              - Found org.gradle.api.attributes.Usage 'for runtime' but wasn't required.

I guess it is related to:

Plugin 3.0.0 includes a new dependency mechanism that automatically matches variants when consuming a library. This means an app's debug variant automatically consumes a library's debug variant, and so on.

See the changes required in the license plugin and example to run into this issue.
https://github.com/cookpad/license-tools-plugin/compare/master...mtiidla:gradle3_a7?expand=1

testImplementation dependencies show up when project has no flavor

When the project doesn't have some flavor, testImplementation dependencies show up in error message and failed to checkLicenses.

Reproduction project is here: https://github.com/chibatching/license-tools-bug-reproduce

To avoid it, we have to add flavor to the project.

Very brief investigation, I found the releaseUnitTestApi, releaseUnitTestCompile, releaseUnitTestCompileOnly and releaseUnitTestImplementation as matched release configuration at

runtimeDependencies << subproject.configurations.all.findAll { Configuration c ->
// compile|implementation|api, release(Compile|Implementation|Api), releaseProduction(Compile|Implementation|Api), and so on.
c.name.matches(/^(?:release\w*)?([cC]ompile|[cC]ompileOnly|[iI]mplementation|[aA]pi)$/)
}.collect {
Configuration copyConfiguration = it.copyRecursive()
copyConfiguration.setCanBeResolved(true)
copyConfiguration.resolvedConfiguration.lenientConfiguration.artifacts
}.flatten() as List<ResolvedArtifact>

Use ch.netzwerg.release plugin

Just a heads-up: I am the developer of ch.netzwerg.release, a plugin which provides all your bumpMajor, bumpMinor, bumpPatch and releng out of the box. It would be easy to use it in your build and I would be happy to assist if you need help!

Cheers, Rahel

JSON output

the HTML output is good, but not very configurable.
With an option for JSON output, developers using the library could implement a ListView or RecyclerView to show the output formatted appropriately.

Warning shown in Gradle 3.0

I found a warning is shown when I run ./gradlew tasks as below. The indicated line is where I call apply plugin: 'com.cookpad.android.licensetools'. When I remove the line, the warning has gone.

The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
        at build_cxnzy1oizz1xepnt3c2kgftri.run(/Users/hiroshi/workspaces/sample-app/app/build.gradle:15)

My Gradle version is like below:

------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------

Build time:   2016-11-22 15:19:54 UTC
Revision:     83b485b914fd4f335ad0e66af9d14aad458d2cc5

Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_77 (Oracle Corporation 25.77-b03)
OS:           Mac OS X 10.11.6 x86_64

I am wondering a code like below might cause this warning as it is deprecated. See http://mrhaki.blogspot.jp/2016/11/gradle-goodness-replacing-operator-for.html for more details.

25        def checkLicenses = project.task('checkLicenses') << {

LicenseToolsPlugin.groovy#L25

Probably, the solution would be just replacing << with doLast, which is suggested in a warning message.

Thanks.

generateLicencePage complains about missing license template

When I execute generateLicensePage, it fails with missing template for template/licenses/Answers Terms of Service.html. Is there a way to provide this template?

My setup:

build.gradle:

dependencies {
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
}

licenses.yml

- artifact: com.crashlytics.sdk.android:answers:+
  name: Android SDK Answers
  copyrightHolder: Crashlytics, Inc.
  license: Answers Terms of Service

license-tools-plugin v2.0

The maintenance cost increased because License Templates must have this plugin. (Operation for adding Templates is not prepared.)

So I propose main feature for v2.0.0 that plugin generate html only showing License Page URL.
In the future, we don't need maintain License Templates.

Adding ICU License and Bouncy Castle License Template

- artifact: com.ibm.icu:icu4j:+
  name: ICU4J
  copyrightHolder: http://site.icu-project.org/
  license: ICU License
  licenseUrl: http://raw.githubusercontent.com/unicode-org/icu/master/icu4c/LICENSE.html
  url: http://icu-project.org/
- artifact: org.bouncycastle:bcprov-jdk15on:+
  name: Bouncy Castle Provider
  copyrightHolder: The Legion of the Bouncy Castle Inc.
  license: Bouncy Castle Licence
  licenseUrl: http://www.bouncycastle.org/licence.html
  url: http://www.bouncycastle.org/java.html

This fails to build as

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:generateLicensePage'.
> java.io.FileNotFoundException: File not found: template/licenses/ICU License.html

Similarly Bouncy Castle License fails to build

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:generateLicensePage'.
> java.io.FileNotFoundException: File not found: template/licenses/Bouncy Castle Licence.html

Is it possible to add these to the template. Thanks

CC0 Support

I would like to include RxJava 2 in my app. Though the library itself is licensed by Apache License, its dependency, Reactive Streams (https://github.com/reactive-streams/reactive-streams-jvm) seems licensed by CC0, Creative Commons 1.0 Universal.

Currently, license-tools-plugin don't recognise such license type. So I am wondering if I could add the template to the tool so that it could support CC0.

Let me know your thoughts. I am not sure if we should remark CC0. Plus, I do not know which license should I include (Probably https://creativecommons.org/publicdomain/zero/1.0/legalcode itself?).

Thank you for your support in advance.

`./gradlew generateLicensePage` throwing InvocationTargetException

./gradlew generateLicensePage throwing this error -

/gradlew generateLicensePage
Parallel execution is an incubating feature.
Build cache is an incubating feature.

> Configure project :offer 
The com.google.protobuf plugin was already applied to the project: :offer and will not be applied again after plugin: android-library

> Configure project :app 
WARNING: Configuration 'provided' is obsolete and has been replaced with 'compileOnly'.
It will be removed at the end of 2018
The ConfigurableReport.setDestination(Object) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the method ConfigurableReport.setDestination(File) instead.
        at build_a7whe4m7sqlxtl9nc5nubr9ny$_run_closure8$_closure54$_closure57.doCall(/Users/iamutkarshtiwari/PROJECT/dinner-app/app/build.gradle:522)
        (Run with --stacktrace to get the full stack trace of this deprecation warning.)
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation'.
It will be removed at the end of 2018
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)


FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Failed to notify project evaluation listener.
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s

LicenseToolsPlugin requires all module dependencies (including not depends module's)

For example, the example-no-dep module create and add dependencies.
And not add to example module dependencies.

Then ./gradlew checkLicenses, it failed to missing libraries in example/licenses.yml, but example does not have showing dependencies.

It caused by project.rootProject.subprojects in resolveProjectDependencies method.

project.rootProject.subprojects.findAll { Project p -> !ignoredProjects.contains(p.name) }.each { Project subproject ->

I think it is not intended behavior that all module's dependencies requires example/licenses.yml

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.