Hi, Nexus has some tasks to shedule snapshots suppressions, see https://books.sonatype.com/nexus-book/reference/scheduled-tasks.html Days rentention and specific repository are some of the options.
Maybe that will help. On Wed, Jul 22, 2015 at 8:02 AM, David Hoffer <[email protected]> wrote: > Yeah, that's the Nexus API I found too and will probably use. > > I agree that for simple/small projects this isn't much of an issue as the > developer can generally get it right and the 'old/obsolete' snapshots don't > cause any problems. Going offline to catch these issues is problematic as > we have other released versions we don't want to delete so users can't just > delete a single folder and go offline and test...it would be hundreds of > folders to manually delete. I'm trying to make it easy and catch it at the > CI server. To be fair to our devs this is not your normal small/simple > app, rather it's huge with tons of modules/profiles and complexity...often > the issue that breaks our releases is just an unpack goal on a resources > zip or an OSGi features.xml that didn't get updated correctly. In any case > if I could simply get Nexus to delete our (prior) project's snapshots and > then fail the CI build it would help a lot. (It would help Nexus too as the > old/obsolete snapshots are just wasting its resources and some of them are > very large.) > > -Dave > > On Tue, Jul 21, 2015 at 11:27 PM, Cintia Del Rio <[email protected]> > wrote: > > > Nexus has a REST api: > > > > > > > http://blog.sonatype.com/2012/07/learning-the-nexus-rest-api-read-the-docs-or-fire-up-a-browser/#.Va8oFhOqpBc > > > > It allows deleting files and folders, it will even reconstruct the > > metadata. I've done a few CURL to delete file on the past. > > > > Anyway, maven provides an offline mode, if the problem is only testing if > > it's not getting dependencies from outside the reactor. Or you can use > > versions:set and set something completely arbitrary > > > > Other option is not deploy snapshots at all. > > > > > http://developer-blog.cloudbees.com/2012/12/should-you-deploy-snapshots.html > > Or deploy to a repo that your CI won't fetch. > > > > But no, it's not really a common need. Deleting non-unique and released > > snapshots is the mainstream feature, and that's all I've seen being used. > > > > > > > > On 22 July 2015 at 15:11, David Hoffer <[email protected]> wrote: > > > > > Apparently our communication has broken down, it seems your not > > > understanding the issue/question. > > > > > > I did find that Nexus does have an API we can use for this...I sure > wish > > > there was a more 'packaged' solution but I've discussed it with our IT > > > department and between us I think we can solve this issue using that > > > approach. If anyone knows of a better solution please let me know. > > > > > > -Dave > > > > > > On Tue, Jul 21, 2015 at 10:32 PM, Ron Wheeler < > > > [email protected]> wrote: > > > > > > > If you have SNAPSHOTs specified, you will get SNAPSHOTs in the build. > > > > When you remove the SNAPSHOT from the parent, there should not be any > > way > > > > for a SNAPSHOT to be included. > > > > > > > > > > > > I am not sure where the SNAPSHOTS are being brought in to a x.x.x > > release > > > > unless you are allowing modules to specify the versions of their > > > > dependencies. > > > > Stop that. > > > > Modules should have no versions on an dependency unless it is a > > reference > > > > to a property in the parent. > > > > Modules should have no references to a version on a dependency that > is > > > one > > > > of the modules that your wrote - > <version>${project.version}</version> > > > > > > > > Ron > > > > > > > > > > > > On 21/07/2015 11:40 PM, David Hoffer wrote: > > > > > > > >> I didn't say x.x.x is the only version in the parent. I said it is > a > > > >> SNAPSHOT. The version varies (of course) but in my prior example I > > said > > > >> it > > > >> was 1.0-SNAPSHOT. > > > >> > > > >> -Dave > > > >> > > > >> On Tue, Jul 21, 2015 at 9:36 PM, Ron Wheeler < > > > >> [email protected] > > > >> > > > >>> wrote: > > > >>> Where are the possible SNAPSHOT versions creeping into the build if > > > x.x.x > > > >>> is the only versions in your parent and the dependencies do not > have > > > any > > > >>> versions (as I suggested). > > > >>> > > > >>> Ron > > > >>> > > > >>> > > > >>> On 21/07/2015 10:54 PM, David Hoffer wrote: > > > >>> > > > >>> Yes we use one version for all modules...comes from top level. > > What I > > > >>>> mean > > > >>>> is this is a non-release build so by maven definition is a > snapshot. > > > >>>> E.g. > > > >>>> x.x.x is built only once at release, x.x.x-SNAPSHOT is built on > > every > > > CI > > > >>>> build. > > > >>>> > > > >>>> -Dave > > > >>>> > > > >>>> On Tue, Jul 21, 2015 at 8:38 PM, Ron Wheeler < > > > >>>> [email protected] > > > >>>> > > > >>>> wrote: > > > >>>>> On 21/07/2015 5:53 PM, David Hoffer wrote: > > > >>>>> > > > >>>>> I'm not sure I understand your reply. We use dependency > > management > > > >>>>> to > > > >>>>> > > > >>>>>> specify versions (for both external & project dependencies), > > however > > > >>>>>> that's > > > >>>>>> not the issue, we have no problem specifying the version to use > > for > > > >>>>>> both > > > >>>>>> of > > > >>>>>> those. What is only in view here are the multi-module project > > > >>>>>> dependencies > > > >>>>>> and by definition they are all SNAPSHOTS as we have not released > > > yet. > > > >>>>>> > > > >>>>>> What do you mean "by definition"? > > > >>>>>> > > > >>>>> If the modules use the parent version as their version, they will > > be > > > >>>>> SNAPSHOTS or releases depending on the parent pom having a > version > > of > > > >>>>> x.x.x-SNAPSHOT or x.x.x. > > > >>>>> i.e. the module version is missing so that the parent's version > is > > > the > > > >>>>> version of the module. > > > >>>>> Any dependency in another module that is part of the project is > set > > > to > > > >>>>> <version>${project.version}</version> > > > >>>>> <dependency> > > > >>>>> <groupId>com.example</groupId> > > > >>>>> <artifactId>anything-core</artifactId> > > > >>>>> <version>${project.version}</version> > > > >>>>> <scope>provided</scope> > > > >>>>> </dependency> > > > >>>>> > > > >>>>> Ron > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> Let me give an example that might help. The multi-module > project > > > is > > > >>>>> > > > >>>>>> large > > > >>>>>> and is growing...you start out with these modules (all the > > versions > > > >>>>>> are > > > >>>>>> 1.0-SNAPSHOT). > > > >>>>>> > > > >>>>>> groupId=com.mycompany.myproject > > > >>>>>> artifactId=artifactA, artifactB, artifactC, artifact1, > artifact2, > > > >>>>>> artifact3 > > > >>>>>> > > > >>>>>> This has been building with your CI system for 1 month when you > > > >>>>>> realize > > > >>>>>> you > > > >>>>>> really want these modules. > > > >>>>>> > > > >>>>>> groupId=com.mycompany.myproject > > > >>>>>> artifactId=app-parent > > > >>>>>> > > > >>>>>> groupId=com.mycompany.myproject.service > > > >>>>>> artifactId=artifactA, artifactB, artifactC > > > >>>>>> > > > >>>>>> groupId=com.mycompany.myproject.transform > > > >>>>>> artifactId=artifact1, artifact2, artifact3 > > > >>>>>> > > > >>>>>> This too builds fine, however in reality somewhere in this new > > build > > > >>>>>> is > > > >>>>>> a > > > >>>>>> reference to > > > com.mycompany.myproject:artifactA:1.0-SNAPSHOT...perhaps > > > >>>>>> for > > > >>>>>> an unpack goal. The build is fine as Nexus will always have > this > > > >>>>>> artifact > > > >>>>>> although it was removed from the build during the refactor. > > > >>>>>> > > > >>>>>> We want to purge all com.mycompany.myproject.* snapshots from > > Nexus > > > so > > > >>>>>> the > > > >>>>>> CI build will fail until the build is correct. > > > >>>>>> > > > >>>>>> -Dave > > > >>>>>> > > > >>>>>> > > > >>>>>> > > > >>>>>> > > > >>>>>> > > > >>>>>> On Tue, Jul 21, 2015 at 3:20 PM, Ron Wheeler < > > > >>>>>> [email protected] > > > >>>>>> > > > >>>>>> wrote: > > > >>>>>> > > > >>>>>>> Using the parent pom to specify the versions of dependencies > > solves > > > >>>>>>> this > > > >>>>>>> problem for most people. > > > >>>>>>> > > > >>>>>>> If there are no SNAPSHOTS in the parent's properties and the > > parent > > > >>>>>>> poms > > > >>>>>>> version is not a SNAPSHOT, then your project is not being built > > > with > > > >>>>>>> SNAPSHOTS. > > > >>>>>>> > > > >>>>>>> We never worry about the SNAPSHOTs in the repo. > > > >>>>>>> > > > >>>>>>> Ron > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> On 21/07/2015 2:42 PM, David Hoffer wrote: > > > >>>>>>> > > > >>>>>>> Yeah it appears our IT group is right...Nexus doesn't have a > > > >>>>>>> UI/feature > > > >>>>>>> > > > >>>>>>> to > > > >>>>>>>> do what we want. What other options are there? > > > >>>>>>>> > > > >>>>>>>> This would seem a common need, major project does a refactor > of > > > >>>>>>>> Maven > > > >>>>>>>> GA > > > >>>>>>>> and want to delete all SNAPSHOTS used by the project to verify > > the > > > >>>>>>>> refactor > > > >>>>>>>> is 100% complete. We have had too many cases where the build > is > > > >>>>>>>> still > > > >>>>>>>> pointing to an old artifact that isn't part of the build > anymore > > > yet > > > >>>>>>>> the > > > >>>>>>>> build is happy because old artifacts are still in Nexus. > > > >>>>>>>> > > > >>>>>>>> -Dave > > > >>>>>>>> > > > >>>>>>>> On Tue, Jul 21, 2015 at 12:36 PM, Karl Heinz Marbaise < > > > >>>>>>>> [email protected]> > > > >>>>>>>> wrote: > > > >>>>>>>> > > > >>>>>>>> Hi David, > > > >>>>>>>> > > > >>>>>>>> On 7/21/15 6:03 PM, David Hoffer wrote: > > > >>>>>>>> > > > >>>>>>>>> We use Nexus as our corporate Maven repository and would > > like > > > >>>>>>>>> to > > > >>>>>>>>> > > > >>>>>>>>> periodically delete certain SNAPSHOT artifacts. We need to > > be > > > >>>>>>>>> able > > > >>>>>>>>> > > > >>>>>>>>>> to > > > >>>>>>>>>> filter/select by groupId and by version...so delete all > where > > > >>>>>>>>>> groupId=com.mycomp.mygroupid.* and version=X.SNAPSHOT. > > > >>>>>>>>>> > > > >>>>>>>>>> You can only delete all kind of SNAPSHOT's in Nexus > based > > > on a > > > >>>>>>>>>> time > > > >>>>>>>>>> > > > >>>>>>>>>> frame > > > >>>>>>>>>> > > > >>>>>>>>> for example delete all SNAPSHOT's which are older than 30 > days > > > >>>>>>>>> etc.. > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> Our use case is that when we refactor part of the build > to > > > use > > > >>>>>>>>> new > > > >>>>>>>>> > > > >>>>>>>>> groupIds > > > >>>>>>>>> > > > >>>>>>>>>> the old ones are not valid anymore however sometimes there > is > > a > > > >>>>>>>>>> lingering > > > >>>>>>>>>> reference to the old groupId, if we can delete all the old > > > >>>>>>>>>> SNAPSHOTS > > > >>>>>>>>>> we > > > >>>>>>>>>> could find those errors now instead of when we release. > > > >>>>>>>>>> > > > >>>>>>>>>> Any ideas on how to do this are much appreciated. > > > >>>>>>>>>> > > > >>>>>>>>>> -Dave > > > >>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>>>> Kind regards > > > >>>>>>>>>> > > > >>>>>>>>>> Karl Heinz Marbaise > > > >>>>>>>>>> > > > >>>>>>>>> > > > > -- > > > > Ron Wheeler > > > > President > > > > Artifact Software Inc > > > > email: [email protected] > > > > skype: ronaldmwheeler > > > > phone: 866-970-2435, ext 102 > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [email protected] > > > > For additional commands, e-mail: [email protected] > > > > > > > > > > > > > > > > > > > -- > > ------- > > Sent from TARDIS. Typos might be a timey whyney thingy. > > Enviado da TARDIS, podem existir erros devido à diferenças de > espaço-tempo. > > > > Cintia Del Rio > > > -- Adrien Rivard
