On 21 November 2014 08:52, Anders Hammar <[email protected]> wrote:

> As no one else has jumped on this, I'd like to pass on some hints/pointers.
> They are based on my own experience and also my rule om thumb for Maven
> practice.
>
> First, never use the finalName. It will only affect the name of the locally
> produced artifact (typically in the target folder). It will not affect the
> artifact name in the Maven repo, which is what really matters. So using it
> will only give you a false feeling of a solution which will break sooner or
> later.
>
>
+1



> Second, never use profiles. Well, profiles is simply the starting point to
> nightmares and very bad Maven solutions. There are many threads on this.
> Just stay away of them...:-)
>
>
+10


> Third, classifiers are typically not something that you should use. There
> are some cases where they could be used, but try to stay away from them.
>
>
+100


> Saying that, I think the solution for you is to have different versions if
> you want to differentiate the branches. Could be, for example, 1.0.0
> (-SNAPSHOT) for the RC branch and 1.1.0 (-SNAPSHOT) for trunk. I don't
> understand the point of having two RC branches though. Are they for the
> same release (version) or two different releases? If you, strangely I'd
> say, have two RC branches for the same "release" you should add some
> postfix to the version. For example 1.0.0 (-SNAPSHOT) and 1.0.0-EXTRACOOL
> (-SNAPSHOT).
>

+1000000000

Bingo!


>
> /Anders
>
> On Thu, Nov 20, 2014 at 12:14 AM, Scott Klein <[email protected]>
> wrote:
>
> > Here is our scenario:
> >
> > We have our SCM trunk and a "release candidate" branch. We merge code
> into
> > the "RC" branch when we want it to go into the next release.
> >
> > In the past everyone built against the RC branch artifacts. However, now
> > we have two release cycles going at the same time and some people want to
> > build against the RC branch and others want to build against the trunk.
> We
> > also need to setup servers, etc with the proper artifacts.
> >
> > So, I think I need to produce two artifacts for each project:
> > "project-version.jar" and "project-version-trunk.jar". This, I think is
> > simple, I just set the <finalName> in the trunk profile.
> >
> > Now, how do I use these so that a user building under the "trunk" profile
> > will only use artifacts with the new classifier?
> >
> > We have a parent POM, used everywhere, that defines all of our dependency
> > management to insure everyone stays "on version" for all of our
> > dependencies. Could I create a property in the "trunk" profile and then
> use
> > that in our dependency  management? For example:
> >
> > <profile>
> >                 <id>trunk</id>
> >                 <build>
> >
> > <finalname>${project.artifactId}-${project.version}-head<finalName>
> >                 </build>
> >                 <properties>
> >                                 <our.classifier>head</our.classifier> <--
> > property to use in dependencies
> >                 </properties>
> >                 ...
> > </profile>
> >
> > <dependencyManagement>
> >                 <dependencies>
> >                                 <dependency>
> >
>  <groupId>com.ours</groupId>
> >
> > <artifactId>project1</artifactId>
> >
> > <version>${project.version}</version>
> >
> > <classifier>${our.classifier}</classifier> <-- use of the property (if
> the
> > property DNE, or is blank, is that OK?
> >                                 </dependency>
> >                                 ...
> >                 </dependencies>
> > </dependencyManagement>
> >
> >
> >
> > This is just me using my limited understanding trying to figure out the
> > solution - if there is a more appropriate way to do this please let me
> know
> >
> >
> > Thanks
> > scott
> >
> >
>

Reply via email to