manifold-systems / manifold

Manifold is a Java compiler plugin, its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more.
http://manifold.systems/
Apache License 2.0
2.42k stars 125 forks source link

manifold-preprocessor: Make -Akey[=value] javac command line options have precedence over build.properties files #623

Closed rsmckinney closed 1 month ago

rsmckinney commented 2 months ago

manifold-preprocessor: Make -Akey[=value] javac command line options have precedence over build.properties files.

As files under source control, build.properties files should be modified exclusively by hand during development and should remain static in the process of building the containing project[s]; build tooling should never modify build.properties files that are under source control. If a build must use different values of properties defined in build.properties files, it should do so using the javac -Akey[=value] command line options.

Currently, the manifold preprocessor bundles -Akey[=value] command line options within the "environment" definitions, which have a lower precedence than build.properties. Thus, to support the proposed precedence change these command line options will be extracted to a separate set of definitions that have a higher precedence than build.properties, but lower than local definitions.

See discussion from https://discord.com/channels/1263152297190359132/1288206093247447073

rsmckinney commented 1 month ago

Fix available with release 2024.1.34 + latest IJ plugin release