diff --git a/README.md b/README.md index d66d543..d8b1f7f 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ Kantra is an experimental CLI that unifies analysis and transformation capabilities of Konveyor. ## Installation -### Linux +The easiest way to install Kantra is to get it via the container image. To download latest container image, run: -Easiest way to install Kantra is to get it via the container image. To download latest container image, run: +### Linux ```sh podman pull quay.io/konveyor/kantra:latest && podman run --name kantra-download quay.io/konveyor/kantra:latest 1> /dev/null 2> /dev/null && podman cp kantra-download:/usr/local/bin/kantra . && podman rm kantra-download @@ -25,12 +25,19 @@ Ensure that we use the connection to the VM `` we created earlier by de podman system connection default ``` - ```sh podman pull quay.io/konveyor/kantra:latest && podman run --name kantra-download quay.io/konveyor/kantra:latest 1> /dev/null 2> /dev/null && podman cp kantra-download:/usr/local/bin/darwin-kantra kantra && podman rm kantra-download ``` -This will copy the binary into your current working directory. To make it available system-wide, run: +### Windows + +```sh +podman pull quay.io/konveyor/kantra:latest && podman run --name kantra-download quay.io/konveyor/kantra:latest 1> /dev/null 2> /dev/null && podman cp kantra-download:/usr/local/bin/windows-kantra kantra && podman rm kantra-download +``` + +--- + +The above will copy the binary into your current directory. Move it to PATH for system-wide use: ```sh sudo mv ./kantra /usr/local/bin/ @@ -70,7 +77,7 @@ Use "kantra [command] --help" for more information about a command. ### Analyze -Analyze allows running source code and binary analysis using analyzer-lsp. +Analyze allows running source code and binary analysis using [analyzer-lsp](https://github.com/konveyor/analyzer-lsp) To run analysis on application source code, run: @@ -90,6 +97,7 @@ Flags: --analyze-known-libraries analyze known open-source libraries -h, --help help for analyze -i, --input string path to application source code or a binary + --json-output create analysis and dependency output as json --list-sources list rules for available migration sources --list-targets list rules for available migration targets -m, --mode string analysis mode. Must be one of 'full' or 'source-only' (default "full") @@ -129,7 +137,7 @@ Use "kantra transform [command] --help" for more information about a command. #### OpenRewrite -`openrewrite` subcommand allows running OpenRewrite recipes on source code. +`openrewrite` subcommand allows running [OpenRewrite](https://docs.openrewrite.org/) recipes on source code. ```sh @@ -157,7 +165,7 @@ kantra transform openrewrite --input= --target= --output= ``` +## Quick Demos + +Once you have kantra installed, these examples will help you run both an +analyze and a transform command. + +### Analyze + +- Get the example application to run analysis on +`git clone https://github.com/konveyor/example-applications` + +- List available target technologies +`kantra analyze --list-targets` + +- Run analysis with a specified target technology +`kantra analyze --input= --output= --target=cloud-readiness` + +- Several analysis reports will have been created in your specified output path: + +```sh +$ ls ./output/ -1 +analysis.log +dependencies.yaml +dependency.log +output.yaml +static-report +``` + +`output.yaml` is the file that contains issues report. +`static-report` contains the static HTML report. +`dependencies.yaml`contains a dependencies report. + +### Transform + +- Get the example application to transform source code +`git clone https://github.com/ivargrimstad/jakartaee-duke` + +- View available OpenRewrite recipes +`kantra transform openrewrite --list-targets` + +- Run a recipe on the example application +`kantra transform openrewrite --input= --target=jakarta-imports` + +- Inspect the `jakartaee-duke` application source code diff to see the transformation + ## Code of Conduct Refer to Konveyor's Code of Conduct [here](https://github.com/konveyor/community/blob/main/CODE_OF_CONDUCT.md). diff --git a/cmd/analyze.go b/cmd/analyze.go index e305044..ecfd6bc 100644 --- a/cmd/analyze.go +++ b/cmd/analyze.go @@ -46,6 +46,7 @@ type analyzeCommand struct { listTargets bool skipStaticReport bool analyzeKnownLibraries bool + jsonOutput bool mavenSettingsFile string sources []string targets []string @@ -106,6 +107,11 @@ func NewAnalyzeCmd(log logr.Logger) *cobra.Command { log.Error(err, "failed to run analysis") return err } + err = analyzeCmd.CreateJSONOutput() + if err != nil { + log.Error(err, "failed to create json output file") + return err + } err = analyzeCmd.GenerateStaticReport(cmd.Context()) if err != nil { log.Error(err, "failed to generate static report") @@ -136,6 +142,7 @@ func NewAnalyzeCmd(log logr.Logger) *cobra.Command { analyzeCommand.Flags().BoolVar(&analyzeCmd.analyzeKnownLibraries, "analyze-known-libraries", false, "analyze known open-source libraries") analyzeCommand.Flags().StringVar(&analyzeCmd.mavenSettingsFile, "maven-settings", "", "path to a custom maven settings file to use") analyzeCommand.Flags().StringVarP(&analyzeCmd.mode, "mode", "m", string(provider.FullAnalysisMode), "analysis mode. Must be one of 'full' or 'source-only'") + analyzeCommand.Flags().BoolVar(&analyzeCmd.jsonOutput, "json-output", false, "create analysis and dependency output as json") return analyzeCommand } @@ -580,6 +587,60 @@ func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string) e return nil } +func (a *analyzeCommand) CreateJSONOutput() error { + if !a.jsonOutput { + return nil + } + outputPath := filepath.Join(a.output, "output.yaml") + depPath := filepath.Join(a.output, "dependencies.yaml") + + data, err := ioutil.ReadFile(outputPath) + if err != nil { + return err + } + ruleOutput := &[]outputv1.RuleSet{} + err = yaml.Unmarshal(data, ruleOutput) + if err != nil { + a.log.V(1).Error(err, "failed to unmarshal output yaml") + return err + } + + jsonData, err := json.MarshalIndent(ruleOutput, "", " ") + if err != nil { + a.log.V(1).Error(err, "failed to marshal output file to json") + return err + } + err = ioutil.WriteFile(filepath.Join(a.output, "output.json"), jsonData, os.ModePerm) + if err != nil { + a.log.V(1).Error(err, "failed to write json output", "dir", a.output, "file", "output.json") + return err + } + + depData, err := ioutil.ReadFile(depPath) + if err != nil { + return err + } + depOutput := &[]outputv1.DepsFlatItem{} + err = yaml.Unmarshal(depData, depOutput) + if err != nil { + a.log.V(1).Error(err, "failed to unmarshal dependencies yaml") + return err + } + + jsonDataDep, err := json.MarshalIndent(depOutput, "", " ") + if err != nil { + a.log.V(1).Error(err, "failed to marshal dependencies file to json") + return err + } + err = ioutil.WriteFile(filepath.Join(a.output, "dependencies.json"), jsonDataDep, os.ModePerm) + if err != nil { + a.log.V(1).Error(err, "failed to write json dependencies output", "dir", a.output, "file", "dependencies.json") + return err + } + + return nil +} + func (a *analyzeCommand) GenerateStaticReport(ctx context.Context) error { if a.skipStaticReport { return nil diff --git a/go.sum b/go.sum index 7234076..f67cbe6 100644 --- a/go.sum +++ b/go.sum @@ -33,6 +33,7 @@ github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUe github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -142,6 +143,7 @@ golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= diff --git a/hack/update-settings.sh b/hack/update-settings.sh new file mode 100755 index 0000000..6a98349 --- /dev/null +++ b/hack/update-settings.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Set IMAGE and NAME environment variables, and run the script in root dir: +# $ IMAGE=quay.io/konveyor/kantra NAME=kantra ./hack/update-settings.sh + +image="${IMAGE:-quay.io/konveyor/kantra}" +name="${NAME:-kantra}" + +sed -i \ + -e "s,\(RootCommandName *string.*default:\"\)[^\"]*\",\1$name\"," \ + -e "s,\(RunnerImage *string.*default:\"\)[^\"]*\",\1$image\"," \ + ./cmd/settings.go diff --git a/test-data/analysis-output.yaml b/test-data/analysis-output.yaml index c9f0c89..bd23f9f 100644 --- a/test-data/analysis-output.yaml +++ b/test-data/analysis-output.yaml @@ -138,8 +138,10 @@ labels: - konveyor.io/target=cloud-readiness - discovery + - konveyor.io/source + - konveyor.io/target incidents: - - uri: file:///opt/input/source/target/classes/persistence.properties + - uri: file:///opt/input/source/src/main/resources/persistence.properties message: When migrating environments, hard-coded IP addresses may need to be modified or eliminated. codeSnip: |2 1 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver @@ -151,7 +153,7 @@ lineNumber: 2 variables: matchingText: 169.60.225.216 - - uri: file:///opt/input/source/src/main/resources/persistence.properties + - uri: file:///opt/input/source/target/classes/persistence.properties message: When migrating environments, hard-coded IP addresses may need to be modified or eliminated. codeSnip: |2 1 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver @@ -163,7 +165,6 @@ lineNumber: 2 variables: matchingText: 169.60.225.216 - extras: [] effort: 1 unmatched: - discover-license @@ -1446,20 +1447,20 @@ - konveyor.io/source - jni incidents: - - uri: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/config-utils-1.0.0.jar?packageName=io.konveyor.demo.config.ApplicationConfiguration.class&source-range=true + - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java message: Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" lineNumber: 12 variables: - file: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/config-utils-1.0.0.jar?packageName=io.konveyor.demo.config.ApplicationConfiguration.class&source-range=true + file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java kind: Constructor name: ApplicationConfiguration - - uri: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/config-utils-1.0.0.jar?packageName=io.konveyor.demo.config.ApplicationConfiguration.class&source-range=true + - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java message: Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" lineNumber: 21 variables: - file: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/config-utils-1.0.0.jar?packageName=io.konveyor.demo.config.ApplicationConfiguration.class&source-range=true + file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java kind: Method name: loadProperties links: @@ -1467,7 +1468,6 @@ title: How to load native libraries and access them via JNI in EAP (with or without a module) - url: https://access.redhat.com/solutions/1444643 title: Is it supported to compile the JNI code as 32-bit shared libraries and use it in 64-bit compiled Java code ? - extras: [] effort: 7 local-storage-00001: description: |- @@ -1479,12 +1479,12 @@ - konveyor.io/source - storage incidents: - - uri: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/config-utils-1.0.0.jar?packageName=io.konveyor.demo.config.ApplicationConfiguration.class&source-range=true + - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java message: 'An application running inside a container could lose access to a file in local storage.. Recommendations. The following recommendations depend on the function of the file in local storage:. * Logging: Log to standard output and use a centralized log collector to analyze the logs.. * Caching: Use a cache backing service.. * Configuration: Store configuration settings in environment variables so that they can be updated without code changes.. * Data storage: Use a database backing service for relational data or use a persistent data storage system.. * Temporary data storage: Use the file system of a running container as a brief, single-transaction cache.' codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" lineNumber: 19 variables: - file: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/config-utils-1.0.0.jar?packageName=io.konveyor.demo.config.ApplicationConfiguration.class&source-range=true + file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java kind: Constructor name: loadProperties links: @@ -1500,7 +1500,6 @@ title: 'OpenShift Container Platform: Input secrets and ConfigMaps' - url: https://docs.openshift.com/container-platform/4.5/storage/understanding-persistent-storage.html title: 'OpenShift Container Platform: Understanding persistent storage' - extras: [] effort: 1 unmatched: - embedded-cache-libraries-01000 @@ -1521,18 +1520,18 @@ - logging-0000 - logging-0001 - jca-00000 - - local-storage-00003 - local-storage-00004 + - local-storage-00003 - session-00000 - java-rmi-00000 - logging-0001 - - java-rpc-00000 - logging-0000 + - java-rpc-00000 - socket-communication-00001 - mail-00000 + - local-storage-00005 - session-00001 - local-storage-00002 - - local-storage-00005 - socket-communication-00000 - name: os/windows description: This is a ruleset for Windows operating system specific rules while migrating to Linux operating system. diff --git a/test-data/deps-output.yaml b/test-data/deps-output.yaml index 62979fd..b7ba274 100644 --- a/test-data/deps-output.yaml +++ b/test-data/deps-output.yaml @@ -8,7 +8,7 @@ labels: - konveyor.io/dep-source=internal - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/io/konveyor/demo/config-utils/1.0.0 + prefix: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0 - name: org.postgresql.postgresql version: 42.2.23 type: compile @@ -16,7 +16,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/postgresql/postgresql/42.2.23 + prefix: file:///root/.m2/repository/org/postgresql/postgresql/42.2.23 - name: org.checkerframework.checker-qual version: 3.5.0 type: runtime @@ -25,7 +25,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/checkerframework/checker-qual/3.5.0 + prefix: file:///root/.m2/repository/org/checkerframework/checker-qual/3.5.0 - name: com.oracle.database.jdbc.ojdbc8 version: 21.1.0.0 type: compile @@ -33,7 +33,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/oracle/database/jdbc/ojdbc8/21.1.0.0 + prefix: file:///root/.m2/repository/com/oracle/database/jdbc/ojdbc8/21.1.0.0 - name: ch.qos.logback.logback-classic version: 1.1.7 type: compile @@ -41,7 +41,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/ch/qos/logback/logback-classic/1.1.7 + prefix: file:///root/.m2/repository/ch/qos/logback/logback-classic/1.1.7 - name: ch.qos.logback.logback-core version: 1.1.7 type: compile @@ -50,7 +50,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/ch/qos/logback/logback-core/1.1.7 + prefix: file:///root/.m2/repository/ch/qos/logback/logback-core/1.1.7 - name: org.hibernate.validator.hibernate-validator version: 6.2.0.Final type: compile @@ -58,7 +58,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/hibernate/validator/hibernate-validator/6.2.0.Final + prefix: file:///root/.m2/repository/org/hibernate/validator/hibernate-validator/6.2.0.Final - name: jakarta.validation.jakarta.validation-api version: 2.0.2 type: compile @@ -67,7 +67,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2 + prefix: file:///root/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2 - name: com.fasterxml.classmate version: 1.5.1 type: compile @@ -76,7 +76,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/fasterxml/classmate/1.5.1 + prefix: file:///root/.m2/repository/com/fasterxml/classmate/1.5.1 - name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final type: compile @@ -84,7 +84,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/hibernate/hibernate-entitymanager/5.4.32.Final + prefix: file:///root/.m2/repository/org/hibernate/hibernate-entitymanager/5.4.32.Final - name: org.jboss.logging.jboss-logging version: 3.4.1.Final type: compile @@ -93,7 +93,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/jboss/logging/jboss-logging/3.4.1.Final + prefix: file:///root/.m2/repository/org/jboss/logging/jboss-logging/3.4.1.Final - name: org.hibernate.hibernate-core version: 5.4.32.Final type: compile @@ -102,7 +102,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/hibernate/hibernate-core/5.4.32.Final + prefix: file:///root/.m2/repository/org/hibernate/hibernate-core/5.4.32.Final - name: org.javassist.javassist version: 3.27.0-GA type: compile @@ -111,7 +111,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/javassist/javassist/3.27.0-GA + prefix: file:///root/.m2/repository/org/javassist/javassist/3.27.0-GA - name: antlr.antlr version: 2.7.7 type: compile @@ -121,7 +121,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/antlr/antlr/2.7.7 + prefix: file:///root/.m2/repository/antlr/antlr/2.7.7 - name: org.jboss.jandex version: 2.2.3.Final type: compile @@ -130,7 +130,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/jboss/jandex/2.2.3.Final + prefix: file:///root/.m2/repository/org/jboss/jandex/2.2.3.Final - name: javax.activation.javax.activation-api version: 1.2.0 type: compile @@ -139,7 +139,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/javax/activation/javax.activation-api/1.2.0 + prefix: file:///root/.m2/repository/javax/activation/javax.activation-api/1.2.0 - name: javax.xml.bind.jaxb-api version: 2.3.1 type: compile @@ -148,7 +148,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/javax/xml/bind/jaxb-api/2.3.1 + prefix: file:///root/.m2/repository/javax/xml/bind/jaxb-api/2.3.1 - name: org.glassfish.jaxb.jaxb-runtime version: 2.3.1 type: compile @@ -157,7 +157,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1 + prefix: file:///root/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1 - name: org.glassfish.jaxb.txw2 version: 2.3.1 type: compile @@ -166,7 +166,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/glassfish/jaxb/txw2/2.3.1 + prefix: file:///root/.m2/repository/org/glassfish/jaxb/txw2/2.3.1 - name: com.sun.istack.istack-commons-runtime version: 3.0.7 type: compile @@ -175,7 +175,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.7 + prefix: file:///root/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.7 - name: org.jvnet.staxex.stax-ex version: "1.8" type: compile @@ -184,7 +184,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/jvnet/staxex/stax-ex/1.8 + prefix: file:///root/.m2/repository/org/jvnet/staxex/stax-ex/1.8 - name: com.sun.xml.fastinfoset.FastInfoset version: 1.2.15 type: compile @@ -193,7 +193,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/sun/xml/fastinfoset/FastInfoset/1.2.15 + prefix: file:///root/.m2/repository/com/sun/xml/fastinfoset/FastInfoset/1.2.15 - name: org.dom4j.dom4j version: 2.1.3 type: compile @@ -202,7 +202,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/dom4j/dom4j/2.1.3 + prefix: file:///root/.m2/repository/org/dom4j/dom4j/2.1.3 - name: org.hibernate.common.hibernate-commons-annotations version: 5.1.2.Final type: compile @@ -211,7 +211,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.1.2.Final + prefix: file:///root/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.1.2.Final - name: javax.persistence.javax.persistence-api version: "2.2" type: compile @@ -220,7 +220,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/javax/persistence/javax.persistence-api/2.2 + prefix: file:///root/.m2/repository/javax/persistence/javax.persistence-api/2.2 - name: net.bytebuddy.byte-buddy version: 1.10.22 type: compile @@ -229,7 +229,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/net/bytebuddy/byte-buddy/1.10.22 + prefix: file:///root/.m2/repository/net/bytebuddy/byte-buddy/1.10.22 - name: org.jboss.spec.javax.transaction.jboss-transaction-api_1.2_spec version: 1.1.1.Final type: compile @@ -238,7 +238,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final + prefix: file:///root/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final - name: org.apache.tomcat.tomcat-jdbc version: 9.0.46 type: runtime @@ -246,7 +246,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/apache/tomcat/tomcat-jdbc/9.0.46 + prefix: file:///root/.m2/repository/org/apache/tomcat/tomcat-jdbc/9.0.46 - name: org.apache.tomcat.tomcat-juli version: 9.0.46 type: runtime @@ -255,7 +255,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/apache/tomcat/tomcat-juli/9.0.46 + prefix: file:///root/.m2/repository/org/apache/tomcat/tomcat-juli/9.0.46 - name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 type: compile @@ -263,7 +263,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot-starter-actuator/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot-starter-actuator/2.5.0 - name: org.springframework.boot.spring-boot-starter version: 2.5.0 type: compile @@ -272,7 +272,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot-starter/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot-starter/2.5.0 - name: org.springframework.boot.spring-boot version: 2.5.0 type: compile @@ -281,7 +281,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot/2.5.0 - name: org.springframework.boot.spring-boot-autoconfigure version: 2.5.0 type: compile @@ -290,7 +290,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.5.0 - name: org.springframework.boot.spring-boot-starter-logging version: 2.5.0 type: compile @@ -299,7 +299,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.5.0 - name: org.apache.logging.log4j.log4j-to-slf4j version: 2.14.1 type: compile @@ -308,7 +308,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.14.1 + prefix: file:///root/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.14.1 - name: org.apache.logging.log4j.log4j-api version: 2.14.1 type: compile @@ -317,7 +317,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/apache/logging/log4j/log4j-api/2.14.1 + prefix: file:///root/.m2/repository/org/apache/logging/log4j/log4j-api/2.14.1 - name: org.slf4j.jul-to-slf4j version: 1.7.30 type: compile @@ -326,7 +326,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30 + prefix: file:///root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30 - name: jakarta.annotation.jakarta.annotation-api version: 1.3.5 type: compile @@ -335,7 +335,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5 + prefix: file:///root/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5 - name: org.yaml.snakeyaml version: "1.28" type: compile @@ -344,7 +344,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/yaml/snakeyaml/1.28 + prefix: file:///root/.m2/repository/org/yaml/snakeyaml/1.28 - name: org.springframework.boot.spring-boot-actuator-autoconfigure version: 2.5.0 type: compile @@ -353,7 +353,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot-actuator-autoconfigure/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot-actuator-autoconfigure/2.5.0 - name: org.springframework.boot.spring-boot-actuator version: 2.5.0 type: compile @@ -362,7 +362,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/boot/spring-boot-actuator/2.5.0 + prefix: file:///root/.m2/repository/org/springframework/boot/spring-boot-actuator/2.5.0 - name: com.fasterxml.jackson.datatype.jackson-datatype-jsr310 version: 2.12.3 type: runtime @@ -371,7 +371,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.12.3 + prefix: file:///root/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.12.3 - name: io.micrometer.micrometer-core version: 1.7.0 type: compile @@ -380,7 +380,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/io/micrometer/micrometer-core/1.7.0 + prefix: file:///root/.m2/repository/io/micrometer/micrometer-core/1.7.0 - name: org.hdrhistogram.HdrHistogram version: 2.1.12 type: compile @@ -389,7 +389,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.12 + prefix: file:///root/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.12 - name: org.latencyutils.LatencyUtils version: 2.0.3 type: runtime @@ -398,7 +398,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/latencyutils/LatencyUtils/2.0.3 + prefix: file:///root/.m2/repository/org/latencyutils/LatencyUtils/2.0.3 - name: org.springframework.spring-web version: 5.3.7 type: compile @@ -406,7 +406,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-web/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-web/5.3.7 - name: org.springframework.spring-webmvc version: 5.3.7 type: compile @@ -414,7 +414,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-webmvc/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-webmvc/5.3.7 - name: org.springframework.spring-expression version: 5.3.7 type: compile @@ -423,7 +423,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-expression/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-expression/5.3.7 - name: org.springframework.spring-jdbc version: 5.3.7 type: compile @@ -431,7 +431,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-jdbc/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-jdbc/5.3.7 - name: org.springframework.data.spring-data-jpa version: 2.5.1 type: compile @@ -439,7 +439,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/data/spring-data-jpa/2.5.1 + prefix: file:///root/.m2/repository/org/springframework/data/spring-data-jpa/2.5.1 - name: org.springframework.data.spring-data-commons version: 2.5.1 type: compile @@ -448,7 +448,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/data/spring-data-commons/2.5.1 + prefix: file:///root/.m2/repository/org/springframework/data/spring-data-commons/2.5.1 - name: org.springframework.spring-orm version: 5.3.7 type: compile @@ -457,7 +457,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-orm/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-orm/5.3.7 - name: org.springframework.spring-context version: 5.3.7 type: compile @@ -466,7 +466,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-context/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-context/5.3.7 - name: org.springframework.spring-aop version: 5.3.7 type: compile @@ -475,7 +475,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-aop/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-aop/5.3.7 - name: org.springframework.spring-tx version: 5.3.7 type: compile @@ -484,7 +484,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-tx/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-tx/5.3.7 - name: org.springframework.spring-beans version: 5.3.7 type: compile @@ -493,7 +493,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-beans/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-beans/5.3.7 - name: org.springframework.spring-core version: 5.3.7 type: compile @@ -502,7 +502,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-core/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-core/5.3.7 - name: org.springframework.spring-jcl version: 5.3.7 type: compile @@ -511,7 +511,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/springframework/spring-jcl/5.3.7 + prefix: file:///root/.m2/repository/org/springframework/spring-jcl/5.3.7 - name: org.aspectj.aspectjrt version: 1.9.6 type: compile @@ -520,7 +520,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/aspectj/aspectjrt/1.9.6 + prefix: file:///root/.m2/repository/org/aspectj/aspectjrt/1.9.6 - name: org.slf4j.slf4j-api version: 1.7.26 type: compile @@ -529,7 +529,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/slf4j/slf4j-api/1.7.26 + prefix: file:///root/.m2/repository/org/slf4j/slf4j-api/1.7.26 - name: com.fasterxml.jackson.core.jackson-databind version: 2.12.3 type: compile @@ -537,7 +537,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.12.3 + prefix: file:///root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.12.3 - name: com.fasterxml.jackson.core.jackson-annotations version: 2.12.3 type: compile @@ -546,7 +546,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.12.3 + prefix: file:///root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.12.3 - name: com.fasterxml.jackson.core.jackson-core version: 2.12.3 type: compile @@ -554,7 +554,7 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.12.3 + prefix: file:///root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.12.3 - name: org.apache.tomcat.tomcat-servlet-api version: 9.0.46 type: provided @@ -562,4 +562,4 @@ labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: konveyor-jdt://contents/root/.m2/repository/org/apache/tomcat/tomcat-servlet-api/9.0.46 + prefix: file:///root/.m2/repository/org/apache/tomcat/tomcat-servlet-api/9.0.46