GithubHelp home page GithubHelp logo

intuit / maven-build-scanner Goto Github PK

View Code? Open in Web Editor NEW
141.0 9.0 22.0 1.01 MB

Know your build - so you can make it faster

License: Apache License 2.0

HTML 35.27% Java 64.40% Dockerfile 0.33%
maven-extension maven

maven-build-scanner's Introduction

Maven Build Scanner

Know your build - so you can make it faster

What Is Maven Build Scanner?

Maven Build Scanner is a tool that hooks into Maven builds and produces reports and charts that breakdown the time Maven spends doing different tasks. These reports provide insights into your builds that can be used to tune it.

It's been designed to work with large and complex builds; ones with hundreds of modules and plugins.

At Intuit it helped take a 40m build run by hundreds of developers every day and reduce it to 4m - a 10x reduction. Read a blog post on the techniques that saved all this time.

(30m of engineering time) * (several hundred engineers) * (every working day for 5 years) * (some dollar amount) = (a LOT of money saved)

Screenshot

Screenshot

Video

Video

How Do I Use It?

Using the build scanner requires three steps:

  1. Integrating the build scanner as a maven extension
  2. Running your build
  3. Running the server to browse the statistics

Alternative 1: Install directly

Install the following:

  • Java
  • Maven
# Install the Maven extension:
output="$(mvn help:evaluate -Dexpression=maven.home -DforceStdout -q)/lib/ext/maven-build-scanner-jar-with-dependencies.jar"
curl -L https://github.com/intuit/maven-build-scanner/releases/download/v2.0.0/maven-build-scanner-jar-with-dependencies.jar -o $output
# Create your first scan:
mvn install
# Start the server to view your results:
output="$(mvn help:evaluate -Dexpression=maven.home -DforceStdout -q)/lib/ext/maven-build-scanner-jar-with-dependencies.jar"
java -jar $output

This will print out a URL to the report. The report will show:

  • A timeline of the build, so you can see how effective concurrency is being used.
  • A pie chart showing the Maven plugins that took the longest.
  • A module-by-module breakdown of tasks.
  • Links to reports on previous builds.

Uninstall

output="$(mvn help:evaluate -Dexpression=maven.home -DforceStdout -q)/lib/ext/maven-build-scanner-jar-with-dependencies.jar"
rm -f $output

Alternative 2: Install using Extension mechanism and docker

Install the following:

  • Java
  • Maven
  • Docker

Clone the github repository and run

mvn install

to build the project and install into your local .m2 diretory.

Create a file .mvn/extensions.xml in the project you want to analyze:

<?xml version="1.0" encoding="UTF-8"?>
<extensions>
    <extension>
        <groupId>com.intuit</groupId>
        <artifactId>maven-build-scanner</artifactId>
        <version>2.0.0-SNAPSHOT</version>
    </extension>
</extensions>
# Create your first scan:
mvn install

Use docker to launch the server:

# Create your first scan:
docker-compose up -d

This will print launch the server listening on port `3000. The report will show:

  • A timeline of the build, so you can see how effective concurrency is being used.
  • A pie chart showing the Maven plugins that took the longest.
  • A module-by-module breakdown of tasks.
  • Links to reports on previous builds.

Uninstall

  • Remove the entry in the extensions.xml
  • Remove the docker container:
docker compose stop && docker compose rm

maven-build-scanner's People

Contributors

alexec avatar asemy avatar baerrach avatar dependabot[bot] avatar edumco avatar ibethencourt avatar stefanpenndorf avatar vivekmore 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

maven-build-scanner's Issues

maven-build-scanner ignores -T arguments

Hi, I'm trying to use maven-build-scanner with openjdk 15, and looks like that ignores mvn arguments.
For instance, when I use -T 8 or -T 1C, it shows only Thread #1

image

Am I doing something wrong? Please help me to figure out, because it seems to be a great tool.

And also when I'm running the build with mvn -T 1C argument,
in the cmd I can see
[INFO] Using the MultiThreadedBuilder implementation with a thread count of 8

but dashbord says
mvn -s /Users/arkady/.m2/settings.xml -T 8 -Pdefault clean test
like I run it with -T 8

java -version
openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.2+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15.0.2+7, mixed mode, sharing)

mvn -v
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/Cellar/maven/3.8.3/libexec
Java version: 15.0.2, vendor: AdoptOpenJDK, runtime: /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
Default locale: en_RU, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"

Dockerize node server

When I ran setup.sh, it errored out partway through the script. I fixed the errors and reran it, and it failed again because node was already running from my previous execution and it was tying up port 3000.

If a docker-compose.yml were used instead to start up mongodb and the node server, then it would automatically stop and clean up the containers when the user control-C'd out of it. It would avoid most system-specific issues as well.

Fix failure when repository is not git

getBranch assumes the Maven project is in a git repository.

So when it fails to file ".git/HEAD" it will fail with NullPointerExecption when basedir.getParentFile() reaches the root.

setup.sh fails

Was running setup.sh it fails with:
``

3/5 Building web server <<<
npm ERR! code E403
npm ERR! 403 403 Forbidden - GET https://registry.npmjs.intuit.com:443/artifactory/api/npm/npm-intuit/xdg-basedir/-/xdg-basedir-3.0.0.tgz
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\xxxxx\AppData\Local\npm-cache_logs\2021-03-25T11_44_35_458Z-debug.log
``

[ERROR] LifecycleProfilerTest.testSessionProfile:78 » NullPointer

Using Maven Version 3.6.3:

------------------------------------------------------------->
mvn install or package fails with:

[main] INFO com.intuit.maven.extensions.build.scanner.LifecycleProfiler - Starting Lifecylce Profiler... [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.122 s <<< FAILURE! - in com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest
[ERROR] testSessionProfile(com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest) Time elapsed: 0.011 s <<< ERROR!
java.lang.NullPointerException
at com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest.testSessionProfile(LifecycleProfilerTest.java:78)

[ERROR] Errors:
[ERROR] LifecycleProfilerTest.testSessionProfile:78 » NullPointer
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test) on project maven-build-scanner: There are test failures.

----------------------------------------------------------->
installing with -DskipTests (installing the extension and running mvn on a project results in:

[WARNING] Failed to notify spy com.intuit.maven.extensions.build.scanner.LifecycleProfiler: null
[WARNING] Failed to notify spy com.intuit.maven.extensions.build.scanner.LifecycleProfiler: null

LifecycleProfilerTest.testSessionProfile:78 » NullPointer

Hello,

Thank you for building this project.

OS: macOS Big Sur
Java : 14.0.2
Node : 15.5.0
NPM : 6.14.10
Maven : 3.6.3

I am getting an error LifecycleProfilerTest.testSessionProfile:78 » NullPointer when running ./setup (step 2/5)

Here are the logs:

1/5 Starting local Mongo container
b55a550cfad7d21480349b3cc8c2839e43b427641499ad0fd1385cf6d65fab32
2/5 Building Maven extension
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.081 s <<< FAILURE! - in com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest
[ERROR] testSessionProfile(com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest)  Time elapsed: 0.036 s  <<< ERROR!
java.lang.NullPointerException
	at com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest.testSessionProfile(LifecycleProfilerTest.java:78)

[ERROR] Errors: 
[ERROR]   LifecycleProfilerTest.testSessionProfile:78 » NullPointer
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test) on project maven-build-scanner: There are test failures.
[ERROR] 
[ERROR] Please refer to /Users/mac/Desktop/maven-build-scanner-master/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

please solve this as soon as possible.

Thank you

Build fails on Java 8

Warning:  Error injecting: com.coveo.FMT
java.lang.UnsupportedClassVersionError: com/google/googlejavaformat/java/FormatterException has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    at java.lang.ClassLoader.defineClass1 (Native Method)
    at java.lang.ClassLoader.defineClass (ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass (URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100 (URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run (URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run (URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged (Native Method)
    at java.net.URLClassLoader.findClass (URLClassLoader.java:362)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf (ClassRealm.java:425)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass (ClassRealm.java:271)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:247)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:239)
    at java.lang.Class.getDeclaredConstructors0 (Native Method)
    at java.lang.Class.privateGetDeclaredConstructors (Class.java:2671)
    at java.lang.Class.getDeclaredConstructors (Class.java:2020)
    at com.google.inject.spi.InjectionPoint.forConstructorOf (InjectionPoint.java:245)
    at com.google.inject.internal.ConstructorBindingImpl.create (ConstructorBindingImpl.java:115)
    at com.google.inject.internal.InjectorImpl.createUninitializedBinding (InjectorImpl.java:706)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBinding (InjectorImpl.java:930)
    at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive (InjectorImpl.java:852)
    at com.google.inject.internal.InjectorImpl.getJustInTimeBinding (InjectorImpl.java:291)
    at com.google.inject.internal.InjectorImpl.getBindingOrThrow (InjectorImpl.java:222)
    at com.google.inject.internal.InjectorImpl.getProviderOrThrow (InjectorImpl.java:1040)
    at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1071)
    at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1034)
    at com.google.inject.internal.InjectorImpl.getInstance (InjectorImpl.java:1086)
    at org.eclipse.sisu.space.AbstractDeferredClass.get (AbstractDeferredClass.java:48)
    at com.google.inject.internal.ProviderInternalFactory.provision (ProviderInternalFactory.java:85)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision (InternalFactoryToInitializableAdapter.java:57)
    at com.google.inject.internal.ProviderInternalFactory$1.call (ProviderInternalFactory.java:66)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:112)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:127)
    at com.google.inject.internal.ProvisionListenerStackCallback.provision (ProvisionListenerStackCallback.java:66)
    at com.google.inject.internal.ProviderInternalFactory.circularGet (ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get (InternalFactoryToInitializableAdapter.java:47)
    at com.google.inject.internal.InjectorImpl$1.get (InjectorImpl.java:1050)
    at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
    at org.eclipse.sisu.inject.LazyBeanEntry.getValue (LazyBeanEntry.java:81)
    at org.eclipse.sisu.plexus.LazyPlexusBean.getValue (LazyPlexusBean.java:51)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:263)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:255)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo (DefaultMavenPluginManager.java:520)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:124)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.437 s
[INFO] Finished at: 2021-04-25T22:10:57Z
[INFO] ------------------------------------------------------------------------
Error:  Failed to execute goal com.coveo:fmt-maven-plugin:2.10:format (default) on project maven-build-scanner: Execution default of goal com.coveo:fmt-maven-plugin:2.10:format failed: An API incompatibility was encountered while executing com.coveo:fmt-maven-plugin:2.10:format: java.lang.UnsupportedClassVersionError: com/google/googlejavaformat/java/FormatterException has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
Error:  -----------------------------------------------------
Error:  realm =    plugin>com.coveo:fmt-maven-plugin:2.10
Error:  strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
Error:  urls[0] = file:/home/runner/.m2/repository/com/coveo/fmt-maven-plugin/2.10/fmt-maven-plugin-2.10.jar
Error:  urls[1] = file:/home/runner/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar
Error:  urls[2] = file:/home/runner/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar
Error:  urls[3] = file:/home/runner/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
Error:  urls[4] = file:/home/runner/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.2/org.eclipse.sisu.inject-0.3.2.jar
Error:  urls[5] = file:/home/runner/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
Error:  urls[6] = file:/home/runner/.m2/repository/com/google/googlejavaformat/google-java-format/1.8/google-java-format-1.8.jar
Error:  urls[7] = file:/home/runner/.m2/repository/com/google/guava/guava/28.1-jre/guava-28.1-jre.jar
Error:  urls[8] = file:/home/runner/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
Error:  urls[9] = file:/home/runner/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
Error:  urls[10] = file:/home/runner/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
Error:  urls[11] = file:/home/runner/.m2/repository/org/checkerframework/checker-qual/2.8.1/checker-qual-2.8.1.jar
Error:  urls[12] = file:/home/runner/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.2/error_prone_annotations-2.3.2.jar
Error:  urls[13] = file:/home/runner/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
Error:  urls[14] = file:/home/runner/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar
Error:  Number of foreign imports: 1
Error:  import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
Error:  
Error:  -----------------------------------------------------
Error:  -> [Help 1]
Error:  
Error:  To see the full stack trace of the errors, re-run Maven with the -e switch.
Error:  Re-run Maven using the -X switch to enable full debug logging.
Error:  
Error:  For more information about the errors and possible solutions, please read the following articles:
Error:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
Error: Process completed with exit code 1.

Build fails on Java 16

While expanding the test matrix to test several versions of java the 16 version threw the following error:

[INFO] Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/28.1-jre/guava-28.1-jre.jar (2.8 MB at 16 MB/s)
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java/com/intuit/maven/extensions/build' is a directory. Skipping.
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java/com/intuit/maven/extensions/build/scanner' is a directory. Skipping.
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java' is a directory. Skipping.
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java/com' is a directory. Skipping.
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java/com/intuit' is a directory. Skipping.
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java/com/intuit/maven' is a directory. Skipping.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.089 s
[INFO] Finished at: 2021-04-25T19:53:26Z
[INFO] ------------------------------------------------------------------------
Error:  Failed to execute goal com.coveo:fmt-maven-plugin:2.10:format (default) on project maven-build-scanner: Execution default of goal com.coveo:fmt-maven-plugin:2.10:format failed: An API incompatibility was encountered while executing com.coveo:fmt-maven-plugin:2.10:format: java.lang.IllegalAccessError: null
Error:  -----------------------------------------------------
Error:  realm =    plugin>com.coveo:fmt-maven-plugin:2.10
Error:  strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
Error:  urls[0] = file:/home/runner/.m2/repository/com/coveo/fmt-maven-plugin/2.10/fmt-maven-plugin-2.10.jar
Error:  urls[1] = file:/home/runner/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar
Error:  urls[2] = file:/home/runner/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar
Error:  urls[3] = file:/home/runner/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar
Error:  urls[4] = file:/home/runner/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.2/org.eclipse.sisu.inject-0.3.2.jar
Error:  urls[5] = file:/home/runner/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
Error:  urls[6] = file:/home/runner/.m2/repository/com/google/googlejavaformat/google-java-format/1.8/google-java-format-1.8.jar
Error:  urls[7] = file:/home/runner/.m2/repository/com/google/guava/guava/28.1-jre/guava-28.1-jre.jar
Error:  urls[8] = file:/home/runner/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
Error:  urls[9] = file:/home/runner/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
Error:  urls[10] = file:/home/runner/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
Error:  urls[11] = file:/home/runner/.m2/repository/org/checkerframework/checker-qual/2.8.1/checker-qual-2.8.1.jar
Error:  urls[12] = file:/home/runner/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.2/error_prone_annotations-2.3.2.jar
Error:  urls[13] = file:/home/runner/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
Error:  urls[14] = file:/home/runner/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.18/animal-sniffer-annotations-1.18.jar
Error:  Number of foreign imports: 1
Error:  import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
Error:  
Error:  -----------------------------------------------------: class com.google.googlejavaformat.java.JavaInput (in unnamed module @0x1e4c33fa) cannot access class com.sun.tools.javac.parser.Tokens$TokenKind (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.parser to unnamed module @0x1e4c33fa
Error:  -> [Help 1]
Error:  
Error:  To see the full stack trace of the errors, re-run Maven with the -e switch.
Error:  Re-run Maven using the -X switch to enable full debug logging.
Error:  
Error:  For more information about the errors and possible solutions, please read the following articles:
Error:  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
[INFO] File '/home/runner/work/maven-build-scanner/maven-build-scanner/src/main/java/com/intuit/maven/extensions' is a directory. Skipping.
Error: Process completed with exit code 1.
1s

Enable to run "in memory" without mongo

Would be great to have an in memory datastorage (maybe addressed through http to reuse existing node process?) to light up the infra needed to run the scanner "locally".

SLF4J compatibity issues - logs not streaming while mvn target execution

Hello,

This is an amazing tool. Here is something happened post installation and I believe it may have to do with different running versions of SLF4J.

Set up:

OS - MAC
Maven Version - 3.8.6
Java Version - OpenJDK 11

For every mvn target execution, I don't see the log which I was able to see before. I see below:

SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details. SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier. SLF4J: Ignoring binding found at [jar:file:/opt/apache-maven-3.8.6/lib/maven-slf4j-provider-3.8.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See https://www.slf4j.org/codes.html#ignoredBindings for an explanation.

I have tried to locate the culprit dependency, but I couldn't. Executing mvn dependency:tree also throw above warning.

Any insight in to fixing this? Thanks in advance

Issues with manual build process

Hi,

Wonderful plugin! Really great to see the breakdown of the multi-threaded critical path.

When following the alternative installation steps today I observed the following issues:

  • The server was attempting to connect to the mongodb before the db was ready & it crashes silently with an error in the container logs saying that the db connection failed. Workaround is to restart the server container but should it have a 'depends_on' and associated healthcheck in the compose?
  • When running behind a proxy, I had to edit /server/dockerfile to make sure that npm respected the proxy. It does not seem to pick up HTTP_PROXY and HTTPS_PROXY env vars?
  • Had to change the mongodb image to mongo:5.0.5 as the db was exiting with status 62 & printing compatibility messages.

Did I do something wrong or are these potential tweaks that can be made? Happy to make a PR if so :)

Build failure - needs Java 11

Failed to execute goal com.coveo:fmt-maven-plugin:2.10:format (default) on project maven-build-scanner: Execution default of goal com.coveo:fmt-maven-plugin:2.10:format failed: An API incompatibility was encountered while executing com.coveo:fmt-maven-plugin:2.10:format: java.lang.UnsupportedClassVersionError: com/google/googlejavaformat/java/FormatterException has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

Support running the server as docker container

With version 1.0 it was possible to run the server as a docker container. With the redesign in version 2.0 removing node and mongo this approach doesn't work anymore. The "old" docker-compose.yml is still in the repository root but disfunctional.

It would be nice if the project provides a working docker-compose.yml.

Additionally maven does not require to copy the *.jar into the ext-lib directory (and forget about it). There is a wide range of possibilities to work with extensions. Maybe there should be a better documentation about the possibilities.

Unable to use the extension (jdk11)

After successfully building the application, I end up with the proper jar within :
/.m2/repository/com/intuit/maven-build-scanner/1.0.0-SNAPSHOT/maven-build-scanner-1.0.0-SNAPSHOT-jar-with-dependencies.jar

But while running the scan on a project after adding the .mvn/extensions.xml file - no report is being built.

I use jdk11 & maven 3.6.3

I might try a few things later and let you know.

Getting NPE when running mvn clean install

java.lang.NullPointerException
at com.intuit.maven.extensions.build.scanner.LifecycleProfiler.getBranch(LifecycleProfiler.java:225)
at com.intuit.maven.extensions.build.scanner.LifecycleProfiler.onEvent(LifecycleProfiler.java:93)
at com.intuit.maven.extensions.build.scanner.LifecycleProfilerTest.testSessionProfile(LifecycleProfilerTest.java:78)

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.