Well, that sounds promising! I'll give that a try and see how that can
help us managing our dependencies. Thanks a lot for the valuable
feedback!

Cheers,
Mirko

On Thu, Apr 1, 2010 at 3:55 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> Yes, import scope can help with this.
>
> We have a pom that declares the version of any dependency we MIGHT need.  
> That pom gets imported to control the versions. The actual project poms then 
> reference the dependencies they need to compile and run. When maven is 
> building the artifact that is deployable, such as a war, it should run 
> through all the transitive dependencies and make sure they are included using 
> the versions specified in the dependency management of the imported pom.
>
> Mix-ins have been discussed several times and we agree that they are a better 
> way to do this.
>
> Ralph
>
> On Apr 1, 2010, at 6:13 AM, Jason van Zyl wrote:
>
>> It's not a perfect solution but look at placing dependencies in a separated 
>> POM and pulling that POM in as a dependency using scope = import.
>>
>> This mode is more compositional and mixin-like.
>>
>> On Apr 1, 2010, at 8:56 AM, Mirko Jahn wrote:
>>
>>> Hi together,
>>>
>>> I looked into the problem again and if there is no way of limiting the
>>> dependencies on a more aggregated level, I believe mixins are a really
>>> important feature to look at. In my case, the parent pom with the
>>> dependency management section and configuration already has about 2.5k
>>> lines of xml. The good thing is that the actual components only have a
>>> few dozen right now. Unfortunately, due to the limited scoping of the
>>> dependencies on a more abstract level, when it comes to deployment, I
>>> have a very limited idea of what is really needed in each assembly/
>>> carve out product. Of course I can look at the dependency graph, but
>>> that doesn't necessarily tell me everything. Some dependencies are
>>> just not used, others are abstracted to API artifacts, not containing
>>> the real implementation. With that many dependencies it gets really
>>> cumbersome to filter out what you really need in a specific
>>> deployment. Maybe I am missing something important, because it is hard
>>> for me to believe that no one else hit this problem before - after all
>>> this shouldn't be rocket science, right? ;-) Anyway any hints on how
>>> to attack such a scenario are greatly appreciated.
>>>
>>> Cheers,
>>> Mirko
>>>
>>> On Mon, Mar 29, 2010 at 5:15 PM, Mirko Jahn <mirkoj...@gmail.com> wrote:
>>>> Hi Jason,
>>>>
>>>> thanks for the fast reply. The requirements are somewhat common I
>>>> guess. We provide a development framework for eHealth applications
>>>> that depending on your module requirement needs various kinds of
>>>> dependencies added to your project pom.
>>>>
>>>> Every user of our framework has to inherit one of our parent poms,
>>>> providing it with the required dependencies. This works great until
>>>> you hit dependencies that do not match into a a hierarchical
>>>> dependency tree. For instance we have all dependencies defined (in a
>>>> management section) in the parent pom. Child poms, defining a simple
>>>> java plug-in enable some of the dependencies. Further down the
>>>> dependency tree, more and more of these dependencies get added. So far
>>>> everything is fine. The problem occurs with cross cutting concerns
>>>> like persistence, web services or auditing that can occur anywhere
>>>> within the pom hierarchy, based on the type of module. Of course, we
>>>> can model each variation or just add all dependencies statically in
>>>> the pom, but this is something we really don't like having (coding
>>>> style and maintenance overhead wise). Based on our MDA/MDD approach of
>>>> creating and managing projects, it would be easy to identify a
>>>> type/feature used within a project and enable a set of dependencies
>>>> defined elsewhere based on a flag in the pom for instance. Basically
>>>> delegating the dependency management to the pom hierarchy. Profiles
>>>> looked very promising to this extend, but failed in the activation
>>>> capabilities on a per module basis. To give you a better understanding
>>>> of the idea, here is a "pseudo" pom hierarchy diagram.
>>>>
>>>> http://yuml.me/3ebcdbc2
>>>>
>>>> As you can see, the root pom defines profiles and sub-modules.
>>>>
>>>> Do you see another way of adding "dependency groups" on a project type
>>>> basis? What do I miss? Where am I thinking to narrow? I am always
>>>> happy to see alternative approaches!
>>>>
>>>> Many thanks,
>>>> Mirko
>>>>
>>>> On Mon, Mar 29, 2010 at 4:40 PM, Jason van Zyl <ja...@sonatype.com> wrote:
>>>>> Basing profile activation on a plugins is probably not the best idea. Are 
>>>>> these not based on the platform?
>>>>>
>>>>> Probably best to state what you require, as people who tend to conflate 
>>>>> their solution with what they think is required tend to go down the wrong 
>>>>> path.
>>>>>
>>>>> Under what conditions exactly do you need the profile activated. Right 
>>>>> now plugin configuration would be too late, but I don't think that would 
>>>>> be the right way anyway. Not that we can't change this, but the clear 
>>>>> requirements would be a good start :-)
>>>>>
>>>>> On Mar 29, 2010, at 6:24 AM, Mirko Jahn wrote:
>>>>>
>>>>>> Hey there,
>>>>>>
>>>>>> I am currently in the process of defining a pom hierarchy of a hugh
>>>>>> project, which was formally developed using Maven 1. As one of the
>>>>>> benefits we'd like to accomplish a grouping of dependencies / features
>>>>>> and configurations. On a first look profiles seemed promising, but the
>>>>>> lack of runtime evaluation of properties defined in the pom.xml itself
>>>>>> made it impossible to use (we can't use the settings.xml because each
>>>>>> component has a different set of dependencies based on the
>>>>>> capabilities and using the command line would be too much of a hazel
>>>>>> and just plain awkward).
>>>>>>
>>>>>> Anyway, the idea of having a profile as some sort of a mixin stuck to
>>>>>> my head. So, I am currently wondering if it is possible to activate
>>>>>> profiles based on a plug-in. I gave it a very basic try by doing the
>>>>>> following:
>>>>>>
>>>>>>   /**
>>>>>>    * @parameter default-value="${project}"
>>>>>>    * @required
>>>>>>    */
>>>>>>   private MavenProject project;
>>>>>>
>>>>>>   @Override
>>>>>>   public void execute()
>>>>>>       throws MojoExecutionException
>>>>>>   {
>>>>>>       // before check
>>>>>>       printActiveProfiles();
>>>>>>
>>>>>>       Iterator<Profile> pIter =
>>>>>> project.getModel().getProfiles().iterator(); // parent pom profiles
>>>>>> ignored for now
>>>>>>       ArrayList l = new ArrayList();
>>>>>>       while(pIter.hasNext()){
>>>>>>           Profile p = pIter.next();
>>>>>>           l.add(p);
>>>>>>       }
>>>>>>       // set profiles active
>>>>>>       project.setActiveProfiles(l);
>>>>>>
>>>>>>       // after check
>>>>>>       printActiveProfiles();
>>>>>>   }
>>>>>>
>>>>>> The code above shows that it does in fact change the project, but the
>>>>>> "activated" profiles don't get used. I assume, I didn't "inject" the
>>>>>> altered project set-up correctly, so I was wondering if someone has a
>>>>>> clue what to do here?
>>>>>>
>>>>>> My ultimate goal is to enable a set of profiles (and later generally
>>>>>> include pom dependencies) based on a plug-in configuration. With this
>>>>>> I would be able to define dependencies and configurations and assemble
>>>>>> them on a "as needed" basis like real mixins for cross cutting
>>>>>> concerns.
>>>>>>
>>>>>> Cheers,
>>>>>> Mirko
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Jason
>>>>>
>>>>> ----------------------------------------------------------
>>>>> Jason van Zyl
>>>>> Founder,  Apache Maven
>>>>> http://twitter.com/jvanzyl
>>>>> ----------------------------------------------------------
>>>>>
>>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>
>>
>> Thanks,
>>
>> Jason
>>
>> ----------------------------------------------------------
>> Jason van Zyl
>> Founder,  Apache Maven
>> http://twitter.com/jvanzyl
>> ----------------------------------------------------------
>>
>
>
> ---------------------------------------------------------------------
> 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