Re: Maven inheritence works with 2.1-SNAPSHOT but not with 2.0.9
Don't mean to interrupt but mine is using pom packaging and inheritance does not work with 2.0.9. Is this a known issue? FYI - I'm basically using Michael Yuan's seam parent example located here: http://www.michaelyuan.com/blog/2007/10/09/jboss-seam-project-setup-with-maven-%E2%80%94-part-2-ear-deployment/ http://www.michaelyuan.com/blog/2007/10/09/jboss-seam-project-setup-with-maven-%E2%80%94-part-2-ear-deployment/ With the parent element in *my* main pom being: org.jboss.seam root 2.1.1.GA Would this create an issue? Thanks Brian E Fox wrote: > > You found a bug in 2.1-SNAPSHOT. The parents must be pom packaging types. > > If you want to share checkstyle, just bundle it into a jar with assembly, > and then you can add that jar as a dependency to your checkstyle config. > You > don't need to inherit from the checkstyle jar itself, Checkstyle will find > the xml on the classpath. I wrote some examples about this here: > http://blogs.sonatype.com/people/2008/04/how-to-share-resources-across-proje > cts-in-maven/ > > http://blogs.sonatype.com/people/2008/04/how-to-override-a-plugins-dependenc > y-in-maven/ > > --Brian > > On 1/20/09 8:03 AM, "kukudas" wrote: > >> Hi, >> >> i have a problem and i hope somebody can help me. I'm kinda new to this >> things so maybe my approach is generaly wrong. >> >> i'm having a parent for example like this: >> >> 4.0.0 >> org.test >> parent >> 1 >> >> >> org.apache.maven.plugins >> maven-checkstyle-plugin >> >> >> ${pom.parent.groupId} >> ${pom.parent.artifactId} >> ${pom.parent.version} >> >> >> >> >> >> org.apache.maven.plugins >> maven-checkstyle-plugin >> >> checkstyle.xml >> >> >> >> >> >> >> And a child like this: >> >> >> org.test >> parent >> 1 >> >> >> 4.0.0 >> org.test >> child >> >> When i use Maven 2.0.9 i get the error that parent packaging has to be >> pom. >> But it has to be jar so my child can access the checkstyle.xml which is >> in >> the parent projects resource folder. >> With Maven 2.1-SNAPSHOT it works as expected (checkstyle runs with my >> rules >> which are in the parents resource folder). Is there maybe a better way to >> solve this or somehow make it work with both versions? I don't want to >> use >> packaging jar, run clean install for my parent and then change it to pom >> so >> that it will work with 2.0.9. >> >> >> Thanks in advance >> >> kukudas > > > - > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > > > -- View this message in context: http://www.nabble.com/Maven-inheritence-works-with-2.1-SNAPSHOT-but-not-with-2.0.9-tp21562721p21598594.html Sent from the Maven - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
Re: Maven inheritence works with 2.1-SNAPSHOT but not with 2.0.9
This approach is ok too and sometimes required. Checkstyle can read its config from the classpath so unpack isn't needed, but this isn't true for all tools. In that case, dependency unpack is the best alternative. On 1/21/09 7:47 AM, "jie...@gmail.com" wrote: > Just thought I would chime in with yet another alternative approach, I > employ a solution slightly different than Brian's assembly solution. > It is possibly not to be considered clean by the Maven crocodiles. :-) > > My top level enterprise parent pom has a few support modules > immediately in its SCM hierarchy. Some of these modules are nothing > more than configuration files, e.g. checkstyle.xml, stylesheet.css > (for maven-javadoc-plugin), etc. They are default jar and > contain nothing but a src/main/resources/com/acme/base/. > Then, in the enterprise parent pom I do something like: > > > > > maven-dependency-plugin > > > Explode com.acme.base:common-config-checkstyle > generate-resources > > unpack > > > > > com.acme.base > common-config-checkstyle > false > src/main/resources > > > true > > > > Since this is executed for every sub-module, everyone that inherits > from this master enterprise base parent (every Maven project in our > shop) will automatically get the most up to date, and corporate policy > adhering, configuration file. In your plugins which exploit these > configuration files, you can simply refer to > ${basedir}/src/main/resources/com/acme/base/checkstyle.xml, e.g. > > I think the only thing that I would change about this solution is that > having these things unpack during the generate-resources phase is a > bit too aggressive for our usage pattern. I could probably bring to > something closer to the install phase, but we then might lose the > ability to do clever things like mvn checkstyle:checkstyle directly... > Ideally, I could refer to a resource in a Spring-like manner, e.g. > classpath:com/acme/base/checkstyle.xml and then I wouldn't need any > unpack executions in the at all!! Oooh, what a sweet dream > that would be.. :-) Anyhow, I have a half dozen of these > common-config-* modules and things are working out pretty smooth > otherwise. > > Good luck! > -jesse > > On Wed, Jan 21, 2009 at 4:01 AM, kukudas wrote: >> >> Thanks for the clearing Brian, >> >> i have read your tutorial and it seems a good approach, however i thought >> about an alternative aproach maybe you can give me your opinion about it. >> > > - > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
Re: Maven inheritence works with 2.1-SNAPSHOT but not with 2.0.9
Just thought I would chime in with yet another alternative approach, I employ a solution slightly different than Brian's assembly solution. It is possibly not to be considered clean by the Maven crocodiles. :-) My top level enterprise parent pom has a few support modules immediately in its SCM hierarchy. Some of these modules are nothing more than configuration files, e.g. checkstyle.xml, stylesheet.css (for maven-javadoc-plugin), etc. They are default jar and contain nothing but a src/main/resources/com/acme/base/. Then, in the enterprise parent pom I do something like: maven-dependency-plugin Explode com.acme.base:common-config-checkstyle generate-resources unpack com.acme.base common-config-checkstyle false src/main/resources true Since this is executed for every sub-module, everyone that inherits from this master enterprise base parent (every Maven project in our shop) will automatically get the most up to date, and corporate policy adhering, configuration file. In your plugins which exploit these configuration files, you can simply refer to ${basedir}/src/main/resources/com/acme/base/checkstyle.xml, e.g. I think the only thing that I would change about this solution is that having these things unpack during the generate-resources phase is a bit too aggressive for our usage pattern. I could probably bring to something closer to the install phase, but we then might lose the ability to do clever things like mvn checkstyle:checkstyle directly... Ideally, I could refer to a resource in a Spring-like manner, e.g. classpath:com/acme/base/checkstyle.xml and then I wouldn't need any unpack executions in the at all!! Oooh, what a sweet dream that would be.. :-) Anyhow, I have a half dozen of these common-config-* modules and things are working out pretty smooth otherwise. Good luck! -jesse On Wed, Jan 21, 2009 at 4:01 AM, kukudas wrote: > > Thanks for the clearing Brian, > > i have read your tutorial and it seems a good approach, however i thought > about an alternative aproach maybe you can give me your opinion about it. > - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
Re: Maven inheritence works with 2.1-SNAPSHOT but not with 2.0.9
Thanks for the clearing Brian, i have read your tutorial and it seems a good approach, however i thought about an alternative aproach maybe you can give me your opinion about it. What i want to archive is simply that i fetch every duplicate configuration within my projects make a parent pom and inherit those things to them. With this i will save redundency and i think my configuration files will be better to read. My problem was that with this aproach i could not set the path for a custom xml file which would contain my checkstyle rules within the parents reporting node, because when i inherited the xml file which was reachable in the parent is not in the children. For example in my parent project the custom.xml file (for checkstyle) was in src/main/resources and my parent pom referenced to it. When inherited this for the child, the child will look in his own src/main/resources and not into the parents one which is pretty clear will result into a file not found exception unless i inherit somehow those xml files too. So my first guess was i need to somehow inherit those xml files too or make them available on compile/run time which i thought would work as i descirbed in my first posting, the problem is that i now found out (with your help) that it isnt possible, because i have to use packaging pom and can not provide a jar. However i could just do it like this: org.apache.maven.plugins maven-checkstyle-plugin file:../checkstyle.xml placing the custom checkstyle.xml on a server so every project which inherits this can access it. I don't know if this aproach brings any disadvantages or is recommendable for my use case. Thanks kukudas. Brian E Fox wrote: > > You found a bug in 2.1-SNAPSHOT. The parents must be pom packaging types. > > If you want to share checkstyle, just bundle it into a jar with assembly, > and then you can add that jar as a dependency to your checkstyle config. > You > don't need to inherit from the checkstyle jar itself, Checkstyle will find > the xml on the classpath. I wrote some examples about this here: > http://blogs.sonatype.com/people/2008/04/how-to-share-resources-across-proje > cts-in-maven/ > > http://blogs.sonatype.com/people/2008/04/how-to-override-a-plugins-dependenc > y-in-maven/ > > --Brian > > On 1/20/09 8:03 AM, "kukudas" wrote: > >> Hi, >> >> i have a problem and i hope somebody can help me. I'm kinda new to this >> things so maybe my approach is generaly wrong. >> >> i'm having a parent for example like this: >> >> 4.0.0 >> org.test >> parent >> 1 >> >> >> org.apache.maven.plugins >> maven-checkstyle-plugin >> >> >> ${pom.parent.groupId} >> ${pom.parent.artifactId} >> ${pom.parent.version} >> >> >> >> >> >> org.apache.maven.plugins >> maven-checkstyle-plugin >> >> checkstyle.xml >> >> >> >> >> >> >> And a child like this: >> >> >> org.test >> parent >> 1 >> >> >> 4.0.0 >> org.test >> child >> >> When i use Maven 2.0.9 i get the error that parent packaging has to be >> pom. >> But it has to be jar so my child can access the checkstyle.xml which is >> in >> the parent projects resource folder. >> With Maven 2.1-SNAPSHOT it works as expected (checkstyle runs with my >> rules >> which are in the parents resource folder). Is there maybe a better way to >> solve this or somehow make it work with both versions? I don't want to >> use >> packaging jar, run clean install for my parent and then change it to pom >> so >> that it will work with 2.0.9. >> >> >> Thanks in advance >> >> kukudas > > > - > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > > > -- View this message in context: http://www.nabble.com/Maven-inheritence-works-with-2.1-SNAPSHOT-but-not-with-2.0.9-tp21562721p21579235.html Sent from the Maven - Users mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
Re: Maven inheritence works with 2.1-SNAPSHOT but not with 2.0.9
You found a bug in 2.1-SNAPSHOT. The parents must be pom packaging types. If you want to share checkstyle, just bundle it into a jar with assembly, and then you can add that jar as a dependency to your checkstyle config. You don't need to inherit from the checkstyle jar itself, Checkstyle will find the xml on the classpath. I wrote some examples about this here: http://blogs.sonatype.com/people/2008/04/how-to-share-resources-across-proje cts-in-maven/ http://blogs.sonatype.com/people/2008/04/how-to-override-a-plugins-dependenc y-in-maven/ --Brian On 1/20/09 8:03 AM, "kukudas" wrote: > Hi, > > i have a problem and i hope somebody can help me. I'm kinda new to this > things so maybe my approach is generaly wrong. > > i'm having a parent for example like this: > > 4.0.0 > org.test > parent > 1 > > > org.apache.maven.plugins > maven-checkstyle-plugin > > > ${pom.parent.groupId} > ${pom.parent.artifactId} > ${pom.parent.version} > > > > > > org.apache.maven.plugins > maven-checkstyle-plugin > > checkstyle.xml > > > > > > > And a child like this: > > > org.test > parent > 1 > > > 4.0.0 > org.test > child > > When i use Maven 2.0.9 i get the error that parent packaging has to be pom. > But it has to be jar so my child can access the checkstyle.xml which is in > the parent projects resource folder. > With Maven 2.1-SNAPSHOT it works as expected (checkstyle runs with my rules > which are in the parents resource folder). Is there maybe a better way to > solve this or somehow make it work with both versions? I don't want to use > packaging jar, run clean install for my parent and then change it to pom so > that it will work with 2.0.9. > > > Thanks in advance > > kukudas - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
Maven inheritence works with 2.1-SNAPSHOT but not with 2.0.9
Hi, i have a problem and i hope somebody can help me. I'm kinda new to this things so maybe my approach is generaly wrong. i'm having a parent for example like this: 4.0.0 org.test parent 1 org.apache.maven.plugins maven-checkstyle-plugin ${pom.parent.groupId} ${pom.parent.artifactId} ${pom.parent.version} org.apache.maven.plugins maven-checkstyle-plugin checkstyle.xml And a child like this: org.test parent 1 4.0.0 org.test child When i use Maven 2.0.9 i get the error that parent packaging has to be pom. But it has to be jar so my child can access the checkstyle.xml which is in the parent projects resource folder. With Maven 2.1-SNAPSHOT it works as expected (checkstyle runs with my rules which are in the parents resource folder). Is there maybe a better way to solve this or somehow make it work with both versions? I don't want to use packaging jar, run clean install for my parent and then change it to pom so that it will work with 2.0.9. Thanks in advance kukudas