Comments (8)
Fix in version 8.16. The solution involves passing a "PackageVersion" parameter to the GetAntlrJar task. The parameter is the collection of all PackageVersion items, wherever they be, in this case in the file Directory.Packages.props. If the version is set in the PackageReference element in the .csproj, it will take that. Otherwise, it searches through PackageVersion's and finds the version on that meta. If that is empty, then the GetAntlrJar task fails and prints out both lists.
from antlr4buildtasks.
The easiest way to fix the bug is to change the build temporarily to "dotnet build --no-restore -v diag" then examine the output.
from antlr4buildtasks.
Right. Harwell's old code sets trace level to "info" for exceptions. Doesn't make sense, since if there's a crash, let us know why!. There are a number of bugs I still haven't cleaned out of Harwell's old Antlr4 build code. I will release a 8.15 version asap, then you can try that, if you haven't tried "-v diag" earlier.
from antlr4buildtasks.
Eugene, If you have time, please try Antlr4BuildTasks 8.15 and see what it says. The error reporting is now fixed, but I don't know why the build would fail. Thanks.
from antlr4buildtasks.
this is the output before the update
22:36:02.017 1:4>Target "Antlr4GetBuildDeps: (TargetId:20)" in file "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\Antlr4BuildTasks.targets" from project "D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj" (target "Build" depends on it):
Task "Message" (TaskId:13)
Task Parameter:Text=Tasks for Antlr in 'C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll' (TaskId:13)
Tasks for Antlr in 'C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll' (TaskId:13)
Done executing task "Message". (TaskId:13)
22:36:01.883 1:3>Antlr4GetBuildDeps: (TargetId:18)
Using "GetJava" task from assembly "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll".
Task "GetJava" (TaskId:16)
Task Parameter:IntermediateOutputPath=obj\Debug\netstandard2.1\ (TaskId:16)
Output Item(s): UsingJavaExec=obj\Debug\netstandard2.1\Java\jre\bin\java.exe (TaskId:16)
Done executing task "GetJava". (TaskId:16)
Task "Message" (TaskId:17)
22:36:02.017 1:4>Antlr4GetBuildDeps: (TargetId:20)
Using "GetJava" task from assembly "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll".
Task "GetJava" (TaskId:14)
Task Parameter:IntermediateOutputPath=obj\Debug\netstandard2.0\ (TaskId:14)
Output Item(s): UsingJavaExec=obj\Debug\netstandard2.0\Java\jre\bin\java.exe (TaskId:14)
Done executing task "GetJava". (TaskId:14)
Task "Message" (TaskId:15)
Task Parameter:Text=The output from GetJava task is 'obj\Debug\netstandard2.0\Java\jre\bin\java.exe' (TaskId:15)
The output from GetJava task is 'obj\Debug\netstandard2.0\Java\jre\bin\java.exe' (TaskId:15)
Done executing task "Message". (TaskId:15)
Using "GetAntlrJar" task from assembly "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll".
Task "GetAntlrJar" (TaskId:16)
Task Parameter:AntlrProbePath=
https://repo1.maven.org/maven2/org/antlr/antlr4/4.9.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.9.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.9/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.8-1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.8/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.6/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.3/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.2-1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.1-1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.3/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.2.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.2.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.0/
(TaskId:16)
Task Parameter:
PackageReference=
NETStandard.Library
IsImplicitlyDefined=true
PrivateAssets=All
Publish=true
Version=2.0.3
Antlr4.Runtime.Standard
Antlr4BuildTasks
PrivateAssets=all (TaskId:16)
Task Parameter:IntermediateOutputPath=obj\Debug\netstandard2.0\ (TaskId:16)
Output Item(s): UsingToolPath= (TaskId:16)
Done executing task "GetAntlrJar". (TaskId:16)
Task "Message" (TaskId:17)
Task Parameter:Text=The output from GetAntlrJar task is '' (TaskId:17)
The output from GetAntlrJar task is '' (TaskId:17)
Done executing task "Message". (TaskId:17)
22:36:32.041 1:4>Done building target "Antlr4GetBuildDeps" in project "JsonTranslate.NET.Core.JustDsl.csproj".: (TargetId:20)
Target "Antlr4CompileReadGeneratedFileList" skipped, due to false condition; (Exists($(Antlr4ToCompileListFile))) was evaluated as (Exists(obj\Debug\netstandard2.0\JsonTranslate.NET.Core.JustDsl.csproj.AntlrToCompileList.txt)).
22:36:32.041 1:4>Target "Antlr4Compile: (TargetId:21)" in file "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\Antlr4BuildTasks.targets" from project "D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj" (target "Build" depends on it):
Building target "Antlr4Compile" completely.
Output file "obj\Debug\netstandard2.0\JsonTranslate.NET.Core.JustDsl.csproj.AntlrToCompileList.txt" does not exist.
Task "Message" (TaskId:18)
Task Parameter:Text=Running the Java Antlr Tool over the grammar files 'JustDsl.g4'. (TaskId:18)
Running the Java Antlr Tool over the grammar files 'JustDsl.g4'. (TaskId:18)
Done executing task "Message". (TaskId:18)
Using "RunAntlrTool" task from assembly "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll".
Task "RunAntlrTool" (TaskId:19)
Task Parameter:Listener=True (TaskId:19)
Task Parameter:Encoding=UTF-8 (TaskId:19)
Task Parameter:GAtn=False (TaskId:19)
Task Parameter:Visitor=True (TaskId:19)
Task Parameter:
SourceCodeFiles=
D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JustDsl.g4
AntOutDir=
CopyToOutputDirectory=Never
DOptions=language=CSharp
Encoding=UTF-8
Error=false
ForceAtn=false
GAtn=false
Generator=MSBuild:Compile
IntermediateOutputPath=obj\Debug\netstandard2.0\
LibPath=
Listener=true
Package=
Visitor=true (TaskId:19)
Task Parameter:ForceAtn=False (TaskId:19)
Task Parameter:Error=False (TaskId:19)
Task Parameter:BuildTaskPath=C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0 (TaskId:19)
Task Parameter:DOptions=language=CSharp (TaskId:19)
Task Parameter:JavaExec=obj\Debug\netstandard2.0\Java\jre\bin\java.exe (TaskId:19)
Task Parameter:IntermediateOutputPath=obj\Debug\netstandard2.0\ (TaskId:19)
Task Parameter:TargetFrameworkVersion=v2.0 (TaskId:19)
22:36:01.883 1:3>Antlr4GetBuildDeps: (TargetId:18)
Task Parameter:Text=The output from GetJava task is 'obj\Debug\netstandard2.1\Java\jre\bin\java.exe' (TaskId:17)
The output from GetJava task is 'obj\Debug\netstandard2.1\Java\jre\bin\java.exe' (TaskId:17)
Done executing task "Message". (TaskId:17)
Using "GetAntlrJar" task from assembly "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll".
Task "GetAntlrJar" (TaskId:18)
Task Parameter:IntermediateOutputPath=obj\Debug\netstandard2.1\ (TaskId:18)
Task Parameter:
PackageReference=
Antlr4.Runtime.Standard
Antlr4BuildTasks
PrivateAssets=all (TaskId:18)
Task Parameter:AntlrProbePath=
https://repo1.maven.org/maven2/org/antlr/antlr4/4.9.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.9.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.9/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.8-1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.8/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.7/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.6/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.3/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.2-1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.1-1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.5/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.3/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.2.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.2.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.2/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.1/;
https://repo1.maven.org/maven2/org/antlr/antlr4/4.0/
(TaskId:18)
Output Item(s): UsingToolPath= (TaskId:18)
Done executing task "GetAntlrJar". (TaskId:18)
Task "Message" (TaskId:19)
22:36:32.041 1:4>Antlr4Compile: (TargetId:21)
Starting Antlr4 Build Tasks. ToolPath is "" (TaskId:19)
22:36:01.883 1:3>Antlr4GetBuildDeps: (TargetId:18)
Task Parameter:Text=The output from GetAntlrJar task is '' (TaskId:19)
The output from GetAntlrJar task is '' (TaskId:19)
22:36:32.041 1:4>Antlr4Compile: (TargetId:21)
Note AntOutDir is empty. Placing generated files in IntermediateOutputPath obj\Debug\netstandard2.0\ (TaskId:19)
22:36:27.975 1:3>Done executing task "Message". (TaskId:19)
22:36:27.976 1:3>Done building target "Antlr4GetBuildDeps" in project "JsonTranslate.NET.Core.JustDsl.csproj".: (TargetId:18)
Target "Antlr4CompileReadGeneratedFileList" skipped, due to false condition; (Exists($(Antlr4ToCompileListFile))) was evaluated as (Exists(obj\Debug\netstandard2.1\JsonTranslate.NET.Core.JustDsl.csproj.AntlrToCompileList.txt)).
22:36:32.041 1:4>Antlr4Compile: (TargetId:21)
JavaExec is "obj\Debug\netstandard2.0\Java\jre\bin\java.exe" (TaskId:19)
22:36:27.976 1:3>Target "Antlr4Compile: (TargetId:19)" in file "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\Antlr4BuildTasks.targets" from project "D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj" (target "Build" depends on it):
22:36:27.976 1:3>Building target "Antlr4Compile" completely.
Output file "obj\Debug\netstandard2.1\JsonTranslate.NET.Core.JustDsl.csproj.AntlrToCompileList.txt" does not exist.
Task "Message" (TaskId:20)
Task Parameter:Text=Running the Java Antlr Tool over the grammar files 'JustDsl.g4'. (TaskId:20)
Running the Java Antlr Tool over the grammar files 'JustDsl.g4'. (TaskId:20)
Done executing task "Message". (TaskId:20)
Using "RunAntlrTool" task from assembly "C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0\Antlr4BuildTasks.dll".
Task "RunAntlrTool" (TaskId:21)
Task Parameter:IntermediateOutputPath=obj\Debug\netstandard2.1\ (TaskId:21)
Task Parameter:Visitor=True (TaskId:21)
Task Parameter:ForceAtn=False (TaskId:21)
Task Parameter:Encoding=UTF-8 (TaskId:21)
Task Parameter:Listener=True (TaskId:21)
Task Parameter:JavaExec=obj\Debug\netstandard2.1\Java\jre\bin\java.exe (TaskId:21)
Task Parameter:BuildTaskPath=C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\..\lib\netstandard2.0 (TaskId:21)
Task Parameter:Error=False (TaskId:21)
Task Parameter:DOptions=language=CSharp (TaskId:21)
Task Parameter:TargetFrameworkVersion=v2.1 (TaskId:21)
Task Parameter:
SourceCodeFiles=
D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JustDsl.g4
AntOutDir=
CopyToOutputDirectory=Never
DOptions=language=CSharp
Encoding=UTF-8
Error=false
ForceAtn=false
GAtn=false
Generator=MSBuild:Compile
IntermediateOutputPath=obj\Debug\netstandard2.1\
LibPath=
Listener=true
Package=
Visitor=true (TaskId:21)
Task Parameter:GAtn=False (TaskId:21)
Starting Antlr4 Build Tasks. ToolPath is "" (TaskId:21)
Note AntOutDir is empty. Placing generated files in IntermediateOutputPath obj\Debug\netstandard2.1\ (TaskId:21)
JavaExec is "obj\Debug\netstandard2.1\Java\jre\bin\java.exe" (TaskId:21)
Cannot find Antlr4 jar file, currently set to 'C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\antlr-4.9-complete.jar' at Antlr4.Build.Tasks.RunAntlrTool.Execute() in Antlr4BuildTasks.dll:token 0x600005f+0x436 (TaskId:21)
22:36:28.017 1:3>C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\Antlr4BuildTasks.targets(195,3): error MSB4181: The "RunAntlrTool" task returned false but did not log an error. [D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj]
Done executing task "RunAntlrTool" -- FAILED. (TaskId:21)
22:36:28.017 1:3>Done building target "Antlr4Compile" in project "JsonTranslate.NET.Core.JustDsl.csproj" -- FAILED.: (TargetId:19)
22:36:28.018 1:3>Done Building Project "D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj" (Build target(s)) -- FAILED.
22:36:32.041 1:4>Antlr4Compile: (TargetId:21)
Cannot find Antlr4 jar file, currently set to 'C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\antlr-4.9-complete.jar' at Antlr4.Build.Tasks.RunAntlrTool.Execute() in Antlr4BuildTasks.dll:token 0x600005f+0x436 (TaskId:19)
22:36:32.081 1:4>C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.14.0\build\Antlr4BuildTasks.targets(195,3): error MSB4181: The "RunAntlrTool" task returned false but did not log an error. [D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj]
Done executing task "RunAntlrTool" -- FAILED. (TaskId:19)
22:36:32.082 1:4>Done building target "Antlr4Compile" in project "JsonTranslate.NET.Core.JustDsl.csproj" -- FAILED.: (TargetId:21)
22:36:32.083 1:4>Done Building Project "D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj" (Build target(s)) -- FAILED.
22:36:32.093 1>Done executing task "MSBuild" -- FAILED. (TaskId:2)
22:36:32.096 1>Done building target "DispatchToInnerBuilds" in project "JsonTranslate.NET.Core.JustDsl.csproj" -- FAILED.: (TargetId:4)
22:36:32.098 1>Done Building Project "D:\code\github\JsonTranslate.NET\src\JsonTranslate.NET.Core.JustDsl\JsonTranslate.NET.Core.JustDsl.csproj" (default targets) -- FAILED.
from antlr4buildtasks.
Interestingly enough, following the path C:\Users\EugeneKrapivin\.nuget\packages\antlr4buildtasks\8.15.0\build
where the target task attempts to find the jar, there is a jar, but the naming is different from what the task is looking for: antlr-4.9.2-complete.jar
renaming the file and running dotnet build --no-restore
actually passes.
from antlr4buildtasks.
OK. The way the Antlr4BuildTasks tool works is to:
- Find the Java JRE.
- Find the Antlr4 Tool Jar.
- Call the Antlr4 Tool Jar using the Java JRE and munch on your Antlr4 grammars.
- Manage what files are generated, what needs to be added to the build, what needs to be removed on a Clean.
For your build, it finds the Java Runtime no problem. That's because it's included in the package and returns that. The tool has some environmental variables or msbuild variables it can look at, but you don't set any of those, so it returns the default.
Then GetAntlrJar task is called. That's supposed to figure out where the Antlr Tool jar is. GetAntlrJar returns an empty string, which means it couldn't find the Antlr Tool jar.
So, the first problem is that if it's going to return null or an empty string, then it needs to throw an error. It should not play dumb. And it is.
The AntlrToolJar task doesn't say what it's looking for, which makes it hard for me looking at the output what version of the Antlr4.Runtime.Standard it's probing for. Also a dumb oversight on my part.
But, your .csproj is very different. It doesn't contain a version for Antlr4.Runtime.Standard in the .csproj. It's instead in a props file way, way over in left field. GetAntlrJar is passed @PackageReference
, with Antlr4.Runtime.Standard but without a version. So, this line likely fails, and so it has no idea what to find.
The solution for now is to just add version="4.9.2"
attribute in the PackageReference
element. So, make sure the .csproj has <PackageReference Include="Antlr4.Runtime.Standard" Version="4.9.2" />
. I don't think you need to do the same with the Antlr4BuildTasks PackageReference, so you can leave it as is.
In the meanwhile, I'll try to figure out how to get the version it's looking for in this new fangled "Centrally managing NuGet package versions" way of build files where it's placed way outside the .csproj file. The problem is that I need to be told what it is. The whole point of Antlr4BuildTasks is that it manages picking up the right Antlr Tool jar with the right runtime. Antlr4 will not run if there is a version skew.
from antlr4buildtasks.
I've tested it locally and it looks awesome, thanks for the kind and swift response!
from antlr4buildtasks.
Related Issues (20)
- ANT02 Cannot find Java executable'' With csproj multitargeting HOT 8
- error ANT02: Cannot find Java executable'' on MacOS HOT 5
- Error MSB3231: Directory %documents%/.jre cannot be deleted HOT 26
- Big performance hit after switch from `Antlr4.CodeGenerator` to `Antlr4BuildTasks` and `Antlr4.Runtime.Standard` HOT 3
- 64 bit version of functions? HOT 1
- Concurrency access to JAR file
- error ANT02: Went through the complete probe list looking for an Antlr4 tool jar, but could not find anything. Fail! HOT 2
- Error ANT02: Cannot find Java executable'' in .NET SDK Docker Image HOT 3
- Transitive Dependency Vulnerability HOT 3
- Cannot use `partial` to complement parser/lexer (unless namespace is explicitly specified) HOT 2
- Nuget has contains debug build HOT 6
- UnbufferedCharStream HOT 1
- Is MSBuild truly necesary? HOT 5
- WebClient is obsolete HOT 1
- 'JRE file used by another process' error when building through Azure DevOps HOT 13
- M2 Mac JDK Download Support HOT 2
- M2 Mac JDK Download Support HOT 1
- Creates parser that uses wrong fieldname when referencing field causing CS1001. HOT 1
- Questions about syntax parsing HOT 2
- Allowing empty string in lexer islands? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from antlr4buildtasks.