I guess you don't even need a custom property since each plugin tends to have one already. So a simpler property-based approach would just be:
<properties> <enforcer.skip>${skipChecks}</enforcer.skip> </properties> And maybe you'd also need <skipChecks>false</skipChecks> in your properties to provide a default for when skipChecks isn't specified on the command line. But like I said, I haven't tried this approach so you'd have to experiment and see if it works for you. On Mon, Sep 14, 2020 at 10:38 AM Andy Feldman <an...@wealthfront.com> wrote: > I agree this behavior is unexpected. But it's different for properties! So > a workaround here is to have a unique property for each check you want to > skip, so that you can override the property by command line rather than > overriding the <skip> configuration directly. Then you can have a single > way to set all these properties. In my company's parent pom we have a > profile that can be activated like `mvn install -P quick` to skip tests and > checks: > > <profile> > <id>quick</id> > <properties> > <checkstyle.skip>true</checkstyle.skip> > <duplicate-finder.skip>true</duplicate-finder.skip> > <enforcer.skip>true</enforcer.skip> > <skipITs>true</skipITs> > <skipTests>true</skipTests> > </properties> > </profile> > > So if I want to still run the enforcer plugin, I can do this: `mvn install > -P quick -Denforcer.skip=false`. > > If you want to keep using a property rather than a profile, I assume you > could have the specific property for each check reference your main > property by default, like: > > <properties> > <skip.our.enforcer>${skipChecks}</skip.our.enforcer> > </properties> > [...] > <skip>${skip.our.enforcer}</skip> > > But I haven't tested it. > > > On Mon, Sep 14, 2020 at 9:11 AM Andreas Sewe < > andreas_s...@buildingblobs.com> wrote: > >> Hi, >> >> I am currently sprinkling <configuration> child elements like the >> following through my (parent) POMs for enforcer:enforce, tidy:check and >> checkstyle:check <executions>: >> >> <skip>${skipChecks}</skip> >> >> This allows me to skip all kinds of checks with a simple >> -DskipChecks=true (or even -DskipChecks), just like I am used to for >> tests with -DskipTests. >> >> Unfortunately, I cannot selectively override this, as the following >> doesn't work: >> >> mvn install -DskipChecks -Denforcer.skip=false >> >> The above command still uses the <skip>${skipChecks}</skip> (with >> skipChecks=true). >> >> Further experimentation led me to believe that *any* explicit pom.xml >> <configuration> cannot be overridden by a property expression given on >> the command line. >> >> This was very surprising, as I would have expected Maven to follow a >> "command line takes precedence over configuration file" approach like >> other tools -- but apparently it doesn't (at least in Maven 3.3.9 and >> 3.6.3) and thus violates the Principle of Least Astonishment (for one of >> its users anyway). >> >> In particular, Maven's handling of property expressions means that >> having no <skip> element and making the default explicit behave >> differently; a <configuration> element like this can never be overridden >> on the command-line: >> >> <skip>false</skip> >> >> I wonder why it was designed that way? >> >> Or should this be considered a bug? >> >> Best wishes, >> >> Andreas >> >>