diff --git a/src/net/pickhaxe/tools/commands/Build.hx b/src/net/pickhaxe/tools/commands/Build.hx index 2f4b8e8..2d49609 100644 --- a/src/net/pickhaxe/tools/commands/Build.hx +++ b/src/net/pickhaxe/tools/commands/Build.hx @@ -548,6 +548,17 @@ class Build implements ICommand } } + // Include the user's dependencies. + for (dependency in defines.pickhaxe.mod.dependencies) + { + var isExtern:String = !dependency.externLib ? '' : '-extern'; + + if (dependency.value.endsWith('.jar')) + { + args = args.concat(['--java-lib' + isExtern, '${dependency.value}']); + } + } + // Pass options to the native Java compiler. // Any values passed here will be passed to `javac` when generating a JAR. @@ -686,4 +697,4 @@ class Build implements ICommand // CLI.print(exitCode); } -} +} \ No newline at end of file diff --git a/src/net/pickhaxe/tools/schema/PickHaxeDefines.hx b/src/net/pickhaxe/tools/schema/PickHaxeDefines.hx index 409d133..1eacd5a 100644 --- a/src/net/pickhaxe/tools/schema/PickHaxeDefines.hx +++ b/src/net/pickhaxe/tools/schema/PickHaxeDefines.hx @@ -84,6 +84,7 @@ typedef PickHaxeDefinesMod = version:String, description:String, entryPoints:Array, + dependencies:Array, license:String, authorData:AuthorData, @@ -373,6 +374,8 @@ class Builder entryPoints: projectFile.entryPoints, + dependencies: projectFile?.dependencies ?? [], + // Default license license: projectFile?.license?.value ?? 'All Rights Reserved', @@ -538,6 +541,8 @@ class Builder entryPoints: projectFile.entryPoints, + dependencies: projectFile?.dependencies ?? [], + license: projectFile?.license?.value ?? 'All Rights Reserved', authorData: { @@ -602,4 +607,4 @@ class Builder return result; } -} +} \ No newline at end of file diff --git a/src/net/pickhaxe/tools/schema/PickHaxeProject.hx b/src/net/pickhaxe/tools/schema/PickHaxeProject.hx index d45f12c..5a11157 100644 --- a/src/net/pickhaxe/tools/schema/PickHaxeProject.hx +++ b/src/net/pickhaxe/tools/schema/PickHaxeProject.hx @@ -31,6 +31,8 @@ typedef PickHaxe = @:list('mod-contributor') var contributors:Array; + @:list('mod-dependency') var dependencies:Array; + /** * Add new Haxelibs as dependencies to the project. */ @@ -167,3 +169,16 @@ typedef ModLicense = { > ValueTag, }; + +/** + * `` tag. + */ +typedef ModDependency = +{ + > ValueTag, + + /** + * Should the dependency be external. + */ + @:optional @:attr var externLib:Bool; +}; \ No newline at end of file diff --git a/templates/pickhaxe-project.xsd b/templates/pickhaxe-project.xsd index 2d18791..b89a3f0 100644 --- a/templates/pickhaxe-project.xsd +++ b/templates/pickhaxe-project.xsd @@ -45,6 +45,11 @@ + + + + + @@ -52,8 +57,9 @@ - - + + +