RE: How can I recursively build -SNAPSHOT dependencies present in the filesystem but outside the reactor?
Thanks Thorsten and Ron, Some additional background: We're a team of about 25 developers, and 100 projects/modules. All developers are familiar with the whole suite of apps, and move freely between projects. They want to be able to work on several projects locally without taking in unwanted -SNAPSHOT changes from our repo (Artifactory). In our case, developers simply want to build apps together (usually two or three together depending on the scope of the development task) to ensure the build accurately reflects the code checked out in the developer's workspace. We have Jenkins, which builds our projects on SCM commit, and builds dependents. This isn't applicable for individual developer workspace builds. Ron - the burden of checking out the whole workspace isn't a big deal for us, and we still "peg" individual dependencies to release versions as necessary. My original question concerned workspace builds where we intend to use limited number of -SNAPSHOT dependencies to trigger a selectively-recursive build across multiple projects. I am currently building a plugin "maven-r-plugin" which internally uses Maven.execute(MavenExecutionResult) and a file-based index of in-house artifacts to prototype a solution to this problem. Suggestions of better solutions would be welcome. Thanks, Chris This email and any attachments contain CONFIDENTIAL information which may be legally privileged. If this communication constitutes a financial promotion, it is directed only at persons who are professional clients or eligible counterparties (as defined under the FSA rules). The information, which is provided on a non-reliance basis, may be subject to verification or amendment. No representation or warranty is made as to its accuracy or completeness. Unless expressly stated otherwise, this email is neither an offer to sell nor a solicitation of any offer to buy an interest in any fund or other investment vehicle sponsored or managed by Aspect Capital Limited (Aspect Funds). Any such offer or solicitation would be made only by way of the final offering documents of such Aspect Fund (which should be considered carefully before any investment decision is made) and only in such jurisdictions where, and to such persons to whom, it would be lawful to do so. Past performance is not necessarily indicative of future returns. Email transmission cannot be guaranteed to be secure or error free. Subject to applicable law, Aspect (or its service providers) may intercept, monitor, review and retain e-communications travelling through its networks/systems. By messaging with Aspect you consent to the foregoing. Aspect Capital Limited is authorised and regulated by the Financial Services Authority and is a company registered in England and Wales under registered no. 3491169. Its registered office is at Nations House, 103 Wigmore Street, London W1U 1QS. ASPECT, ASPECT CAPITAL, the ASPECT CAPITAL device and ASPECT CAPITAL:THE SCIENCE OF INVESTMENT are registered trademarks of Aspect Capital Limited. © Aspect Capital Limited 2012. All rights reserved. For more information, go to www.aspectcapital.com.
Re: How can I recursively build -SNAPSHOT dependencies present in the filesystem but outside the reactor?
On Jun 15, 2012, at 7:58 AM, Thorsten Heit wrote: > Hi Chris, > >> Is there a neat way I could get Maven to perform a recursive build >> that looks on the filesystem to find -SNAPSHOT dependency projects >> and builds them? >> I'm familiar with Maven plugin development, but haven't yet found >> any clues toward a solution in the Maven / Aether documentation. > > I'd suggest you use a CI system such as Jenkins for that purpose: > > Jenkins parses the pom.xml files on Maven projects and automatically > detects dependencies between jobs. If you start a certain job, Jenkins > automatically triggers builds on all dependent subjobs, quite similar to > what you want to achieve. I believe that there's a checkbox in the project's config you have to check for this (auto-rebuilding if a dependency changes) to happen. You'll also want to turn on the option that blocks building the user of the dependencies while the dependencies are being built. Honestly. I'm the only person working on the projects I was talking about, but I love using Jenkins. It means that after I commit, I find out within 10 minutes if the commit I made actually works. Often I find I forgot a file, or else I find a test only worked on the computer I wrote it on due to assumptions. I figure it'll take between 1-2 hours to setup if you have no experience, and if so, it'll probably be time well spent. - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
Re: How can I recursively build -SNAPSHOT dependencies present in the filesystem but outside the reactor?
Hi Chris, > Is there a neat way I could get Maven to perform a recursive build > that looks on the filesystem to find -SNAPSHOT dependency projects > and builds them? > I'm familiar with Maven plugin development, but haven't yet found > any clues toward a solution in the Maven / Aether documentation. I'd suggest you use a CI system such as Jenkins for that purpose: Jenkins parses the pom.xml files on Maven projects and automatically detects dependencies between jobs. If you start a certain job, Jenkins automatically triggers builds on all dependent subjobs, quite similar to what you want to achieve. I'd recommend to install the Upstream Downstream Column Plugin that adds two quite useful columns to Jenkins' job list: one that lists all "parent" jobs, and another with all subjobs as far as Jenkins has detected them. HTH Thorsten
Re: How can I recursively build -SNAPSHOT dependencies present in the filesystem but outside the reactor?
On 15/06/2012 4:43 AM, Chris Beach wrote: I have two projects as follows, in neighbouring directories on the filesystem: * project_a (-SNAPSHOT) * project_b (-SNAPSHOT, depends on project_a) I'd like to build project_b and for Maven to discover that project_a exists on the filesystem and thus build it rather than look in the local repo for its artifact. Why.? This means that: - you are stuck as a 1 man shop, - you need to keep all of your projects active at once - you will have trouble figuring out what is finished. The "Best Practice" is to: - have a Maven repo - Nexus or another, where Maven looks for its artifacts, - have a SCM - Subversion or some other, where you keep source code with proper source version control - have an IDE - Eclipse STS or some other, where you checkout code from your SCM, produce artifacts that are tested and then deployed to your repo, checkin your code to your SCM and ,if you are finished with that module, deleted from your IDE or at least closed. - declare your dependencies in your POMs and if you need aggregation POMs to group utilities or core functions, do that. This is a one-time investment in productivity enhancement that makes life better. We have roughly 70 modules making webapps, web services and batch jobs and 10 libraries that group third party and internal utilities for us. We use Eclipse STS, Maven, Subversion and Nexus and the environment is very easy to use, well organized and controlled. If you don't want to do it "right", Eclipse STS will allow you to resolve Maven artifacts from your workspace and do roughly what you seem to want. Ron I could build these within an aggregator and use the reactor to select project_b i.e. mvn --projects project_b [goal] However, this is problematic because * this two-project example is a simplification of my real build, which consists of dozens of projects, and I don't want to have to maintain an aggregator project that lists all of them. * I only want to recursively build -SNAPSHOT dependencies Is there a neat way I could get Maven to perform a recursive build that looks on the filesystem to find -SNAPSHOT dependency projects and builds them? I'm familiar with Maven plugin development, but haven't yet found any clues toward a solution in the Maven / Aether documentation. Chris Beach This email and any attachments contain CONFIDENTIAL information which may be legally privileged. If this communication constitutes a financial promotion, it is directed only at persons who are professional clients or eligible counterparties (as defined under the FSA rules). The information, which is provided on a non-reliance basis, may be subject to verification or amendment. No representation or warranty is made as to its accuracy or completeness. Unless expressly stated otherwise, this email is neither an offer to sell nor a solicitation of any offer to buy an interest in any fund or other investment vehicle sponsored or managed by Aspect Capital Limited (Aspect Funds). Any such offer or solicitation would be made only by way of the final offering documents of such Aspect Fund (which should be considered carefully before any investment decision is made) and only in such jurisdictions where, and to such persons to whom, it would be lawful to do so. Past performance is not necessarily indicative of future returns. Email transmission cannot be guaranteed to be secure or error free. Subject to applicable law, Aspect (or its service providers) may intercept, monitor, review and retain e-communications travelling through its networks/systems. By messaging with Aspect you consent to the foregoing. Aspect Capital Limited is authorised and regulated by the Financial Services Authority and is a company registered in England and Wales under registered no. 3491169. Its registered office is at Nations House, 103 Wigmore Street, London W1U 1QS. ASPECT, ASPECT CAPITAL, the ASPECT CAPITAL device and ASPECT CAPITAL:THE SCIENCE OF INVESTMENT are registered trademarks of Aspect Capital Limited. © Aspect Capital Limited 2012. All rights reserved. For more information, go to www.aspectcapital.com. -- Ron Wheeler President Artifact Software Inc email: rwhee...@artifact-software.com skype: ronaldmwheeler phone: 866-970-2435, ext 102 - To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org
How can I recursively build -SNAPSHOT dependencies present in the filesystem but outside the reactor?
I have two projects as follows, in neighbouring directories on the filesystem: * project_a (-SNAPSHOT) * project_b (-SNAPSHOT, depends on project_a) I'd like to build project_b and for Maven to discover that project_a exists on the filesystem and thus build it rather than look in the local repo for its artifact. I could build these within an aggregator and use the reactor to select project_b i.e. mvn --projects project_b [goal] However, this is problematic because * this two-project example is a simplification of my real build, which consists of dozens of projects, and I don't want to have to maintain an aggregator project that lists all of them. * I only want to recursively build -SNAPSHOT dependencies Is there a neat way I could get Maven to perform a recursive build that looks on the filesystem to find -SNAPSHOT dependency projects and builds them? I'm familiar with Maven plugin development, but haven't yet found any clues toward a solution in the Maven / Aether documentation. Chris Beach This email and any attachments contain CONFIDENTIAL information which may be legally privileged. If this communication constitutes a financial promotion, it is directed only at persons who are professional clients or eligible counterparties (as defined under the FSA rules). The information, which is provided on a non-reliance basis, may be subject to verification or amendment. No representation or warranty is made as to its accuracy or completeness. Unless expressly stated otherwise, this email is neither an offer to sell nor a solicitation of any offer to buy an interest in any fund or other investment vehicle sponsored or managed by Aspect Capital Limited (Aspect Funds). Any such offer or solicitation would be made only by way of the final offering documents of such Aspect Fund (which should be considered carefully before any investment decision is made) and only in such jurisdictions where, and to such persons to whom, it would be lawful to do so. Past performance is not necessarily indicative of future returns. Email transmission cannot be guaranteed to be secure or error free. Subject to applicable law, Aspect (or its service providers) may intercept, monitor, review and retain e-communications travelling through its networks/systems. By messaging with Aspect you consent to the foregoing. Aspect Capital Limited is authorised and regulated by the Financial Services Authority and is a company registered in England and Wales under registered no. 3491169. Its registered office is at Nations House, 103 Wigmore Street, London W1U 1QS. ASPECT, ASPECT CAPITAL, the ASPECT CAPITAL device and ASPECT CAPITAL:THE SCIENCE OF INVESTMENT are registered trademarks of Aspect Capital Limited. © Aspect Capital Limited 2012. All rights reserved. For more information, go to www.aspectcapital.com.