manikmagar / git-versioner-maven-extension Goto Github PK
View Code? Open in Web Editor NEWGenerate Maven project versions from git commit history. No more manual version management.
License: MIT License
Generate Maven project versions from git commit history. No more manual version management.
License: MIT License
This extension does not run when used in Java 8. Adding an extension entry in extensions.xml will not show any issues at execution time but it won't execute either.
When loading a project that has this extension in IntelliJ, it fails with the following message:
No HEAD exists and no explicit starting revision was specified
Looking in the logs of IntelliJ, we can see the following stacktrace:
2023-05-16 08:47:05,811 [ 62395] INFO - #o.j.i.maven - com.github.manikmagar.maven.versioner.core.GitVersionerException: One of setGitDir or setWorkTree must be called.
at com.github.manikmagar.maven.versioner.core.git.JGit.executeOperation(JGit.java:21)
at com.github.manikmagar.maven.versioner.core.git.JGitVersioner.version(JGitVersioner.java:23)
at com.github.manikmagar.maven.versioner.extension.GitVersionerModelProcessor.processModel(GitVersionerModelProcessor.java:90)
at com.github.manikmagar.maven.versioner.extension.GitVersionerModelProcessor.read(GitVersionerModelProcessor.java:64)
at org.apache.maven.model.building.DefaultModelBuilder.readModel(DefaultModelBuilder.java:552)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:257)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:243)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:175)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:122)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.buildSinglePom(Maven3ServerEmbedder.java:198)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.getProjectBuildingResults(Maven3ServerEmbedder.java:167)
at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.lambda$doResolveProject$2(Maven3XServerEmbedder.java:866)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedder$1.run(Maven3ServerEmbedder.java:366)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.executeWithSessionScope(Maven3ServerEmbedder.java:441)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.executeWithMavenSession(Maven3ServerEmbedder.java:374)
at org.jetbrains.idea.maven.server.Maven3ServerEmbedder.executeWithMavenSession(Maven3ServerEmbedder.java:363)
at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.doResolveProject(Maven3XServerEmbedder.java:849)
at org.jetbrains.idea.maven.server.Maven3XServerEmbedder.resolveProject(Maven3XServerEmbedder.java:798)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: One of setGitDir or setWorkTree must be called.
at org.eclipse.jgit.lib.BaseRepositoryBuilder.requireGitDirOrWorkTree(BaseRepositoryBuilder.java:636)
at org.eclipse.jgit.lib.BaseRepositoryBuilder.setup(BaseRepositoryBuilder.java:600)
at org.eclipse.jgit.storage.file.FileRepositoryBuilder.build(FileRepositoryBuilder.java:55)
at com.github.manikmagar.maven.versioner.core.git.JGit.executeOperation(JGit.java:16)
... 34 more
Which break the whole integration with Maven.
It looks like, when invoked from IntelliJ, JGit is unable to find the .git folder. Probably because the Maven3XServerEmbedder
class is ran from outside the working folder.
I see that in the JGit#findGitDir
method, the basePath is built from the mavenProject basedir information. I think the same principle could be used in the JGit#executeOperation
method.
Add a plugin goal to create a git tag in local repository with current computed version.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.