This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 4f6886a7d06f6ae6ca52b24b279adb73dd7b4f9c
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Mon Nov 4 09:38:33 2019 +0100

    feat(quarkus): Use the Camel K runtime plugin to list runtime dependencies
---
 pkg/builder/runtime/quarkus.go | 47 +++++++++++++++++++++---------------------
 1 file changed, 24 insertions(+), 23 deletions(-)

diff --git a/pkg/builder/runtime/quarkus.go b/pkg/builder/runtime/quarkus.go
index 265e0da..480fbac 100644
--- a/pkg/builder/runtime/quarkus.go
+++ b/pkg/builder/runtime/quarkus.go
@@ -1,12 +1,13 @@
 package runtime
 
 import (
-       "bufio"
-       "bytes"
        "fmt"
+       "io/ioutil"
        "os"
        "path"
 
+       yaml2 "gopkg.in/yaml.v2"
+
        "github.com/pkg/errors"
 
        "github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
@@ -68,11 +69,6 @@ func generateQuarkusProject(ctx *builder.Context) error {
        p.Build.Plugins = append(p.Build.Plugins,
                maven.Plugin{
                        GroupID:    "io.quarkus",
-                       ArtifactID: "quarkus-bootstrap-maven-plugin",
-                       Version:    
ctx.Build.RuntimeProvider.Quarkus.QuarkusVersion,
-               },
-               maven.Plugin{
-                       GroupID:    "io.quarkus",
                        ArtifactID: "quarkus-maven-plugin",
                        Version:    
ctx.Build.RuntimeProvider.Quarkus.QuarkusVersion,
                        Executions: []maven.Execution{
@@ -96,36 +92,41 @@ func computeQuarkusDependencies(ctx *builder.Context) error 
{
        mc.LocalRepository = ctx.Build.Platform.Build.Maven.LocalRepository
        mc.Timeout = ctx.Build.Platform.Build.Maven.Timeout.Duration
 
-       // Build the project, as the quarkus-bootstrap plugin build-tree goal
-       // requires the artifact to be installed
-       mc.AddArgument("install")
+       // Build the project
+       mc.AddArgument("package")
        if err := maven.Run(mc); err != nil {
                return errors.Wrap(err, "failure while building project")
        }
 
-       // Call the Quarkus dependencies plugin
+       // Retrieve the runtime dependencies
        mc.AdditionalArguments = nil
-       mc.AddArguments("quarkus-bootstrap:build-tree")
-       output := new(bytes.Buffer)
-       // TODO: improve logging while capturing output
-       mc.Stdout = output
+       
mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list",
 ctx.Catalog.RuntimeVersion)
        if err := maven.Run(mc); err != nil {
-               return errors.Wrap(err, "failure while determining 
dependencies")
+               return errors.Wrap(err, "failure while determining classpath")
+       }
+
+       dependencies := path.Join(mc.Path, "target", "dependencies.yaml")
+       content, err := ioutil.ReadFile(dependencies)
+       if err != nil {
+               return err
        }
 
-       scanner := bufio.NewScanner(output)
-       scanner.Split(bufio.ScanLines)
-       for scanner.Scan() {
-               gav, err := maven.ParseGAV(scanner.Text())
+       cp := make(map[string][]v1alpha1.Artifact)
+       err = yaml2.Unmarshal(content, &cp)
+       if err != nil {
+               return err
+       }
+
+       for _, e := range cp["dependencies"] {
+               gav, err := maven.ParseGAV(e.ID)
                if err != nil {
-                       continue
+                       return nil
                }
 
                fileName := gav.GroupID + "." + gav.ArtifactID + "-" + 
gav.Version + "." + gav.Type
                location := path.Join(mc.Path, "target", "lib", fileName)
                _, err = os.Stat(location)
-               // We check that the dependency actually exists in the lib 
directory as the
-               // quarkus-bootstrap Maven plugin reports deployment 
dependencies as well
+               // We check that the dependency actually exists in the lib 
directory
                if os.IsNotExist(err) {
                        continue
                }

Reply via email to