blangel / ply Goto Github PK
View Code? Open in Web Editor NEWa sensible (so far java) build tool
License: Apache License 2.0
a sensible (so far java) build tool
License: Apache License 2.0
This is not an issue, but I wanted to open a discussion and did not find a better place.
I like the simplicity of the model ply uses: the concept of scopes, scripts, etc.
however, property files are not that nice to read and work with.
Hashicop invented HCL (inspired by ucl) in order to provide a language that was good for both humans and machines.
Typesafe Config is an implementation for Java for a similar idea. Keeping the underlaying model the same, the build configuration could look, in a single file like:
project {
version=1.0
name=ply-compiler
namespace=ply-compiler
}
compiler {
java.source=1.6
java.target=1.6
}
dependencies {
"ply-util:ply-util" = 1.0.5
}
dependencies.test {
// #Fri Oct 21 17:20:55 EDT 2011
"junit:junit" = 4.10
}
manifest {
mainClass=net.ocheyedan.ply.script.CompilerScript
}
Also provides some flexibility (which makes it very human friendly), like:
manifest.mainClass=net.ocheyedan.ply.script.CompilerScript
project.version=1.0
project.name=ply-compiler
project.namespace=ply-compiler
in this language can be writen with dot notation or:
manifest {
mainClass=net.ocheyedan.ply.script.CompilerScript
}
project {
version=1.0
name=ply-compiler
namespace=ply-compiler
}
But you get all the features and testability of a single library that has no dependencies, which at the same time it is also a super-set of properties.
Features of this HOCON language:
#
or //
{}
around a root object=
as a synonym for :
=
or :
before a {
sofoo { a : 42 }
foo.bar=42
means foo { bar : 42 }
include
feature merges root object in another file intofoo { include "bar.json" }
merges keys inbar.json
into the object foo
.conf
,.json
, .properties
include url("http://example.com")
or file()
orclasspath()
syntax to force the type, or use just include "whatever"
to have the library do what you probably meanurl()
/file()
/classpath()
syntax is not supportedfoo : ${a.b}
sets key foo
to the same valueb
field in the a
objectfoo : the quick ${colors.fox} jumped
${HOME}
would work as you${user.home}
.${?a.b}
to permit them to be missing.+=
syntax to append elements to arrays, path += "/bin"
I am very interested in trying this. I am not sure if you would think about accepting it upstream giving that the property files are kind of "core" to the current design, but I also understand the important part is keeping the simplicity, so I would like to have a discussion before I start to try to implement it.
I believe that:
Could make it a serious player, especially in Linux distributions where maven is pure pain.
I can't figure out the license of the code from the git repository, which prevents eg. packaging it.
The localRepo property in the file depmngr.properties cannot be set to any directory under Windows. Using relative, absolute or paths made up of the parameters such as ${PLY_HOME}\some\dir all does not work because internally the path gets expanded and Java thinks the ':' after the drive letter signifies a protocol it does not know. Have also tried the file type URI to no effect. Very hard to fix because Ply is built using itself! :-) Catch 22 - Ply needs a fix for Windows, to compile the fix you need Ply.
Hey guys, I am getting Error: Could not find or load main class net.ocheyedan.ply.JvmPrimer when trying to build the dash labs dynamodb fork. Wondering if this is something wrong on my part or a bug. Id really like to get the project built.
[ply] building dynamodb-geo, 1.1.0 and its submodules:
[ply] geo-core
[ply] s3-geo
[ply]
[ply] building dynamodb-geo itself before its submodules
[clean] Error: Could not find or load main class net.ocheyedan.ply.JvmPrimer
[err!] script ply-clean-1.0.jar failed [ exit code = 1 ].
Path seperator for the -Xbootclasspath command line parameter to java.exe on Windows need to be ';' and not ':' as is the case for *nix apparently. This is a problem in the *.properties files driving Ply. Note that in the ply.bat runner script the seperator is in fact ';' and that seems to work fine.
Fix is just to alter the *.properties files, replacing ':' with ';' where appropriate.
This may admittedly be an error with Dropwizard or its dependencies itself, but, when I try to ply dep add io.dropwizard:dropwizard-core:0.7.0
, the process ultimately terminates with
[dep] [err!] Message: Illegal character in path at index 100: file:///Users/benjamin/.ply_home/repo/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${version.jackson.core}/jackson-module-jaxb-annotations-${version.jackson.core}.jar
[dep] [err!] for file:///Users/benjamin/.ply_home/repo/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${version.jackson.core}/jackson-module-jaxb-annotations-${version.jackson.core}.jar
[dep] [err!] Message: The local path is not valid [ file:///Users/benjamin/.ply_home/repo/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${version.jackson.core}/jackson-module-jaxb-annotations-${version.jackson.core}.jar ]
[dep] [err!] path to missing dependency [ io.dropwizard:dropwizard-core -> io.dropwizard:dropwizard-jersey -> com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider -> com.fasterxml.jackson.module:jackson-module-jaxb-annotations ].
[err!] script ply-dependency-manager-1.0.jar failed [ exit code = 1 ].
This looks to me as if ply is failing to interpolate version identifiers into the transitive Jackson dependencies. Notably, this dependency when using Maven or Gradle works fine.
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.