> it seems that I can only require that the XML elements be overridden > in *all* descendant POMs, and this introduces too much redundancy.
I see. Would it be sufficient if the requireElements rule had a multiModule flag which, if set, green-lighted the build when the stated elements are defined in the local parent POM? This feature would assume you are using the aggregator==parent scheme, and follow the <relativePath> declared in the <parent> of each POM. If it finds a POM there, it would parse it and then check for the required elements in _that_ POM instead of the initial one. And do this recursively, in case you have a multi-layered multi-module build. The downside of this approach: modules of a project would only build if the parent is available locally. E.g.: if you try to build one module of a multi-module build which has been physically disconnected from its parent (e.g., a partial SVN checkout), the enforcer would fail because it would not find the local parent POM to validate against. One can also imagine various "aggegator != parent" organizations where the parent is not available locally, which would also all fail to support this scheme. Thoughts? -- Curtis Rueden LOCI software architect - https://loci.wisc.edu/software ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden On Thu, Mar 2, 2017 at 9:13 AM, <org.apache.maven.u...@io7m.com> wrote: > 'Ello. > > On 2017-03-02T08:16:43 -0600 > Curtis Rueden <ctrue...@wisc.edu> wrote: > > > Hi, > > > > > I do actually want to enforce this, the issue is that I only want to > > > enforce it as far as the first ancestor. > > > > Sorry if you stated otherwise in your writeup, but my understanding is > that > > you want to define some empty properties in your new root POM, and then > > ensure they are _not_ empty in the next level down. Right? > > Yes, but additionally some XML elements as well. > > I'd like to enforce that: > > 1. Some properties that are defined as empty in the root POM are > non-empty in all descendants. > > 2. Some XML elements that are defined in the root POM (such as > issueManagement) are overridden _at least once_ between the root > and any leaf project. > > The requireProperty rule you provided does seem to properly handle point > 1, but I think that the options we've discussed are too heavy-handed > for point 2. Unless I've missed something obvious, it seems that I can > only require that the XML elements be overridden in *all* descendant > POMs, and this introduces too much redundancy. > > M >