You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by ke...@apache.org on 2023/02/13 03:50:49 UTC

[skywalking-eyes] branch dep/maven/tree-file created (now 75bef90)

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

kezhenxu94 pushed a change to branch dep/maven/tree-file
in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git


      at 75bef90  dep/maven: use output file to store the dep tree for cleaner result

This branch includes the following new commits:

     new 75bef90  dep/maven: use output file to store the dep tree for cleaner result

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[skywalking-eyes] 01/01: dep/maven: use output file to store the dep tree for cleaner result

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch dep/maven/tree-file
in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git

commit 75bef90d9a1e25a22a1607c70a2a8cd32dd555de
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Mon Feb 13 11:50:38 2023 +0800

    dep/maven: use output file to store the dep tree for cleaner result
    
    When using output file to store the dependency tree, `dependency:tree` emits a cleaner tree with effective pom file, this reduces unused dependencies in result
---
 pkg/deps/golang.go |  2 +-
 pkg/deps/maven.go  | 23 +++++++++++++----------
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/pkg/deps/golang.go b/pkg/deps/golang.go
index 507dc7b..ea32f0b 100644
--- a/pkg/deps/golang.go
+++ b/pkg/deps/golang.go
@@ -85,7 +85,7 @@ func (resolver *GoModResolver) Resolve(goModFile string, config *ConfigDeps, rep
 func (resolver *GoModResolver) ResolvePackages(modules []*packages.Module, config *ConfigDeps, report *Report) error {
 	for _, module := range modules {
 		func() {
-			if exclued, _ := config.IsExcluded(module.Path, module.Version); exclued {
+			if excluded, _ := config.IsExcluded(module.Path, module.Version); excluded {
 				return
 			}
 			if l, ok := config.GetUserConfiguredLicense(module.Path, module.Version); ok {
diff --git a/pkg/deps/maven.go b/pkg/deps/maven.go
index 0c5b146..bf79983 100644
--- a/pkg/deps/maven.go
+++ b/pkg/deps/maven.go
@@ -18,11 +18,10 @@
 package deps
 
 import (
-	"bufio"
-	"bytes"
 	"encoding/xml"
 	"fmt"
 	"io"
+	"io/ioutil"
 	"os"
 	"os/exec"
 	"path/filepath"
@@ -126,19 +125,23 @@ func (resolver *MavenPomResolver) DownloadDeps() error {
 }
 
 func (resolver *MavenPomResolver) LoadDependencies(config *ConfigDeps) ([]*Dependency, error) {
-	buf := bytes.NewBuffer(nil)
-
-	cmd := exec.Command(resolver.maven, "dependency:tree") // #nosec G204
-	cmd.Stdout = bufio.NewWriter(buf)
-	cmd.Stderr = os.Stderr
+	depsFile, err := ioutil.TempFile(os.TempDir(), "maven-dependencies.txt")
+	if err != nil {
+		return nil, err
+	}
+	defer os.Remove(depsFile.Name())
 
-	logger.Log.Debugf("Running command: [%v], please wait", cmd.String())
-	err := cmd.Run()
+	output, err := exec.Command(resolver.maven, "dependency:tree", "-DoutputFile="+depsFile.Name()).Output() // #nosec G204
 	if err != nil {
+		logger.Log.Errorln(string(output))
 		return nil, err
 	}
 
-	deps := LoadDependencies(buf.Bytes(), config)
+	buf, err := os.ReadFile(depsFile.Name())
+	if err != nil {
+		return nil, err
+	}
+	deps := LoadDependencies(buf, config)
 	return deps, nil
 }