Open checketts opened 7 years ago
Hi @checketts!
Thank for your report. You are right. Currently there are no other repositories as the default ones supported. To implement this as fast as possible could you provide me access to a comparable repository like yours? So I can be sure that it worked like expected.
Thanks!
I actually just ran into this as well. I was trying out a simple "from the ground up" to learn more golang and gradle. I started out with an empty directory that contained the gradle wrapper and a simple "hello world" golang file. When running ./gradlew
build I hit the same error mentioned above.
For my own curiosity, is it not supported to use this plugin to build a project that is not checked into a repo?
I'm also having this issue. I've got a layout like so:
rootProject directory
-Go project directory
--some packages
---package1
----1.go
----2.go
---package2
----1.go
----2.go
--build.gradle
-build.gradle
When I run the root build.gradle with "gradlew build", it gets into the Go project and fails when trying to download dependencies for the Go project. I haven't specified any dependencies in build.gradle. Those packages have files that reference each other by package name, but I don't understand why it's trying to download those dependencies and not just running go test and go build
I am getting the same issue. I see you asked for a repository like that. I can give you one if you still need it. Let me know where I can send you the details.
Thanks
@provirus I'am very happy to get access to such repository. But I need only read access with already a sample go project that can be used as a library in it.
I implemented a base version of this that currently does only support explicit configured 3rd party VCS Repository Providers and released this under 0.1.16
.
Here an excerpt from the README.md
// Method to register other VCS Repository provider that are not already supported by this plugin.
// vcsType: One of 'git', 'bzr', 'hg' or 'svn'
// prefix: Dependency prefix that identifies this provider.
// IMPORTANT: Add a slash as suffix.
// name: Name of this provider for display in logs etc.
// dependencyPattern: Regular expression (Java compatible) that should match the whole dependency and
// provides a submatch named <root> which matches the base of the dependency
// and another submatch named <subPath> that matches potential sub paths.
vcsRepositoryProvider('<vcsType>', '<prefix>', '<name>', '<dependencyPattern>')
// Example:
// vcsRepositoryProvider('git', 'github.com/', 'GitHub', '^(?<root>github\\.com/[A-Za-z0-9_.\\-]+/[A-Za-z0-9_.\\-]+)(?<subPath>/[A-Za-z0-9_.\\-]+)*\$')
I have to discover if a full automatic discovery like in Go build in mechanism is a good idea because in this context it could be very resource expensive (without caching etc.).
Hi. I see you replied 2 days ago, but GitHub sent me a notification only 1 hour ago.
I created the sample project with plugin 0.1.15 .
git clone https://gitlab.foilen.com/provirus/simple-project.git
cd simple-project/
./gradlew build
:baseValidate
:validate
:prepareToolchain
:baseGetTools
:getTools
:basePrepareSources
:prepareSources
:baseTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':baseTest'.
> Could not download dependency: gitlab.foilen.com/provirus/simple-project
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3.564 secs
If I change for 0.1.16, I am getting the new expected error:
> Don't know how to handle dependency 'gitlab.foilen.com/provirus/simple-project' because there VCS Repository Provider that could handle it.
Try register it under golang.dependencies with vcsRepositoryProvider(...).
Since that is not a dependency (it is the current project and the current "group"), I don't see why another config would be needed. There is nothing to download at all.
Thanks
@provirus: This is not a dependency directly referenced by your code but minimum referenced by a dependency you referenced. 😉 Because of this the dependency manager is still required to download it. And like a mentioned above currently every dependency in the whole tree should have a VCS Repository provider and since every of these providers have different ways how their paths are structured the plugin is required to explicitly know it or guess it (like also go get
will do it). Currently there is no guessing is implemented and does also have not a good impact on the performance (but I'am on it) you need do explicitly define it at first.
In your case please try:
vcsRepositoryProvider('git', 'gitlab.foilen.com/', 'GitLab Community Edition', '^(?<root>gitlab\\.foilen\\.com/[A-Za-z0-9_.\\-]+/[A-Za-z0-9_.\\-]+)(?<subPath>/[A-Za-z0-9_.\\-]+)*\$')
I am pretty new with "go" so I cannot really get your joke
This is not a dependency directly referenced by your code but minimum referenced by a dependency you referenced
I didn't need to use go get
yet (since I don't need any dependencies).
Looking at what go get
does: "download and install packages and dependencies", I really have no use of that yet.
In the case of this project:
The way I see it:
go get
for any dependenciesBut the more I think and read what you wrote, I think the issue here is that given the "group" (which is a full url path), you think that the folder structure could be different than the URL in the "group" depending on the VCS provider. Is that right? E.g for group "gitlab.foilen.com/provirus/simple-project", the temp folder structure could be: "gitlab.foilen.com/provirus/simple-project" or "gitlab.foilen.com/provirus_simple-project" ?
Attempting to build or run tests tries to download code for the project it is building.
In my
build.gradle
my group is set like so:git.gofun.com
is my internal git repo. This project will be checked in there eventually. But not yet. The build should be able to build based on the code it has available locally.