Correct. I don't want to duplicate the configuration twice, the first
time in my plugin and the second time in the <dependencies> section to
let Maven correctly compute the build plan.

2013/7/30 Stephen Connolly <stephen.alan.conno...@gmail.com>:
> On 30 July 2013 14:23, Francesco Mari <mari.france...@gmail.com> wrote:
>
>> I missed to describe my use case. I will try to do it as detailed as I
>> can, but it can be quite verbose.
>>
>> I have a project which is built by aggregating other artifacts with
>> different roles: runtime OSGi bundles, plain content, testing OSGi
>> bundles, integration testing modules. You can't build this project
>> with executions of existing plugins (trust me, we tried), so a new
>> plugin has been written to handle the corner cases of the packaging
>> required by the project. The project is usually deployed as a runnable
>> JAR file and a .properties file containing metadata which cannot be
>> contained in a POM file.
>>
>> The packaging plugin contains a LifecycleParticipant as an extension,
>> and dependencies are automatically added on the project depending on
>> the configuration of the plugin. As you can imagine, the code of the
>> LifecycleParticipant is messy, as it tries to scan projects, plugins
>> and configurations to figure out what to use as dependencies of the
>> project. This is done for two reasons. First, the project is inside an
>> aggregator with the bundles it depends on, so it must be built after
>> its dependencies are built. Second, we often inspect dependencies of
>> our projects using the Maven Dependency Plugin or the Versions Maven
>> Plugin and we would like to have tooling support.
>>
>> The pure and correct solution would be to duplicate the same
>> information I have in the configuration of the plugin and to copy it
>> in the dependencies section of the POM. This will satisfy my
>> requirements, but will make the configuration of the build too
>> verbose.
>>
>> If I had custom dependency scopes like "runtime-bundle",
>> "testing-bundle", "content", etc. I could be able to still use the
>> dependency mechanism of Maven, let Maven assemble the POM model as
>> usual, parse the configuration and configure my plugin, instead of
>> doing it in my LifecycleParticipant, which is tedious and error prone
>> (other than duplicated logic). I could write my plugin to scan the
>> dependencies for custom scopes, instead of relying on the
>> configuration only.
>>
>> Do you have better ideas for this problem?
>>
>>
> So really this is a question of build-time information. The "exported"
> transitive dependencies will fit neatly into the existing scopes, but you
> would like a simplified *build time* configuration?
>
>
>> 2013/7/30 Stephen Connolly <stephen.alan.conno...@gmail.com>:
>> > I find the lure of the custom scopes to be a siren's call.
>> >
>> > There are maybe 2-3 "missing" scopes. all other needs are better
>> addressed
>> > with a different project structure in my view.
>> >
>> > We have the separation between test and non-test... but test is an all or
>> > nothing... need the symmetry between the non-test scopes and the test
>> > scopes, e.g.
>> >
>> > compile -> test-compile
>> > runtime -> test-runtime
>> >
>> > I'd also want a "none" scope so that things like the maven dependency and
>> > assembly plugins can reference project dependencies without polluting
>> > compile classpaths.
>> >
>> > of course the real issue that the above masks is that unit tests should
>> not
>> > be using such tricks... and integration tests should be in a separate
>> > module, but we need the integration tests failing to block the module
>> that
>> > they are testing from being built.
>> >
>> > What is also needed is a way to signify architecturally specific
>> artifacts,
>> > and also a way to signify that artifact A subsumes or provides an
>> > equivalent API to artifact B so that when A is on the classpath, B is
>> > automatically excluded from transitive dependencies.
>> >
>> > But what I'd really like to understand is what you think you need these
>> > custom scopes for... because perhaps I am being arrogant and assuming I
>> > have thought of all the valid use cases and you can show me the error of
>> my
>> > thinking
>> >
>> > -Stephen
>> >
>> >
>> > On 30 July 2013 13:22, Francesco Mari <mari.france...@gmail.com> wrote:
>> >
>> >> Hi,
>> >>
>> >> I was wondering why using custom dependency scopes issues a warning
>> >> when the POM model is validated. Why Maven just don't ignore dependecy
>> >> scopes he cannot understand?
>> >>
>> >> I was thinking to treat dependency scopes in a different way. The only
>> >> logic I've found about dependency scopes is in [1] and [2] (I'm pretty
>> >> sure there is more around), respectively how dependency scope
>> >> inheritance is computed and whether to import POM dependencies with
>> >> scope "import".
>> >>
>> >> Can this logic be encapsulated in a component which is able to track
>> >> other optional "dependency scope" components? Each "dependency scope"
>> >> component will define a new dependency scope and will encapsulate the
>> >> rules about it (i.e. what happens if a dependency of the given scope
>> >> is inherited, if it can be imported, and so on).
>> >>
>> >> An alternative and simpler solution could be that a "dependency scope"
>> >> component maps a custom dependency scope to one standard scope defined
>> >> by Maven, so to establish an "is-a" relationship between a custom
>> >> dependency scope and a standard one.
>> >>
>> >> What do you think?
>> >>
>> >> [1]:
>> >>
>> https://github.com/apache/maven/blob/master/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java#L351
>> >> [2]:
>> >>
>> https://github.com/apache/maven/blob/master/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java#L876
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>> >> For additional commands, e-mail: dev-h...@maven.apache.org
>> >>
>> >>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>> For additional commands, e-mail: dev-h...@maven.apache.org
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to