Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Introduction

Moves serves two primary functions: Creating releases and deploying those releases to Containers

...

(a.k.a

...

App

...

Servers).

...

This

...

section

...

discusses

...

the

...

release

...

process

...

in

...

detail.

...

A

...

typical

...

MIT

...

application

...

(for

...

example

...

a

...

web

...

app)

...

will

...

contain

...

  • code

...

  • specific

...

  • to

...

  • that

...

  • application
  • MIT developed components
  • third party components (for example the spring framework)

We will call these MIT apps, MIT components and 3rd party components respectively.

Prerequisites

Subversion set-up

Each MIT app and MIT component exists as a maven project. That project is housed in a subversion repository, using the subversion "trunk, tags, branches" pattern. That is, for every MIT application and every MIT component, there exists a subversion URL which contains the sub-folders "trunk", "tags" and "branches". In general, development occurs in the "trunk" folder, but on rare occasions development can occur in a subfolder of the "branches" subfolder. (See http://svnbook.red-bean.com/en/1.2/svn.branchmerge.maint.html

...

for

...

an

...

overview

...

of

...

the

...

"trunk,

...

tags,

...

branches"

...

pattern.

...

Maven

...

set-up

...

Within

...

trunk,

...

there

...

will

...

be

...

a

...

file

...

called

...

pom.xml.

...

All

...

builds

...

are

...

built

...

by

...

Maven.

...

The

...

pom.xml

...

tells

...

maven

...

how

...

to

...

build

...

an

...

app/component,

...

and

...

which

...

components

...

that

...

app/component

...

depends

...

upon.

...

While

...

Maven

...

is

...

primarily

...

designed

...

for

...

building

...

java

...

apps

...

and

...

components,

...

plugins

...

exist

...

whereby

...

it

...

can

...

be

...

used

...

to

...

package

...

and

...

assemble

...

other

...

types

...

of

...

components/application.

...

A

...

complete

...

overview

...

of

...

Maven

...

is

...

beyond

...

the

...

scope

...

of

...

this

...

document.

...

However,

...

for

...

those

...

new

...

to

...

maven,

...

the

...

following

...

is

...

a

...

great

...

place

...

to

...

begin

...

learning

...

http://www.sonatype.com/books/maven-book/

...

.

...

The

...

pom.xml

...

file

...

contains

...

an

...

element

...

called

...

version.

...

In

...

the

...

subversion

...

trunk

...

*the

...

version

...

will

...

always

...

contain

...

the

...

-SNAPSHOT

...

suffix.

...

Declaring

...

dependencies

...

on

...

3rd

...

Party

...

components

...

-

...

the

...

easy

...

way

...

For

...

many/most

...

mainstream

...

open

...

source

...

components

...

(for

...

example

...

the

...

Spring

...

Framework),

...

source

...

and

...

binary

...

code

...

is

...

automatically

...

accessible

...

to

...

your

...

project

...

simply

...

by

...

declaring

...

a

...

dependency.

...

For

...

example,

...

to

...

include

...

the

...

Spring

...

framework,

...

we

...

would

...

add

...

the

...

following

...

dependency

{:=|=
Code Block
lang
xml
title
Spring-web
Framework
Dependency
}<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.0.3.RELEASE</version>
</dependency>
{code}

Since

...

spring-web

...

version

...

3.0.3

...

and

...

all

...

of

...

it's

...

dependencies

...

exist

...

in

...

the

...

standard

...

maven

...

repositories,

...

then

...

we're

...

done.

...

Declaring

...

dependencies

...

on

...

3rd

...

Party

...

components

...

which

...

have

...

their

...

own

...

repositories

...

It

...

is

...

possible

...

to

...

add

...

repositories

...

directly

...

to

...

your

...

pom.xml.

...

However,

...

it

...

is

...

preferable

...

to

...

have

...

a

...

MIT

...

Maven

...

Repository

...

Admin

...

mirror

...

the

...

3rd

...

party

...

repository.

...

This

...

will

...

make

...

the

...

component

...

available

...

to

...

all

...

projects,

...

while

...

also

...

decreasing

...

network

...

loads.

...

(For

...

the

...

SAIS

...

teams,

...

the

...

mirror

...

configured

...

in

...

the

...

MIT

...

Maven

...

Repository

...

should

...

be

...

visible

...

to

...

the

...

"saisGroupRepo"

...

repository.

...

See

...

your

...

network

...

admin

...

for

...

details.)

...

Once

...

this

...

is

...

done,

...

add

...

your

...

dependency

...

to

...

pom.xml

...

as

...

described

...

in

...

"Declaring

...

dependencies

...

on

...

3rd

...

Party

...

components

...

-

...

the

...

easy

...

way"..

...

Declaring

...

dependencies

...

on

...

3rd

...

Party

...

components

...

which

...

do

...

not

...

have

...

a

...

maven

...

distribution

...

available.

...

Sometimes

...

the

...

3rd

...

party

...

components

...

we

...

wish

...

to

...

use

...

will

...

not

...

exist

...

in

...

the

...

standard

...

Maven

...

repositories.

...

This

...

may

...

be

...

because

...

they

...

are

...

closed

...

source,

...

or

...

because

...

the

...

vendor

...

has

...

their

...

own

...

repository.

...

In

...

this

...

case,

...

you

...

will

...

potentially

...

need

...

to

...

perform

...

the

...

following

...

tasks

...

  1. make

...

  1. up

...

  1. a

...

  1. group

...

  1. id

...

  1. (usually

...

  1. com.whateverthevendornameis)

...

  1. and

...

  1. artifactid

...

  1. (e.g

...

  1. my3rdpartycomponent)

...

  1. rename

...

  1. the

...

  1. jar

...

  1. file

...

  1. to

...

  1. [artifactid]-

...

  1. [version].jar

...

  1. create

...

  1. a

...

  1. jar

...

  1. file

...

  1. containing

...

  1. the

...

  1. source

...

  1. files,

...

  1. if

...

  1. available,

...

  1. and

...

  1. call

...

  1. it

...

  1. [artifactid]

...

  1. -

...

  1. [version]-sources.jar.

...

  1. This

...

  1. step

...

  1. is

...

  1. optional

...

  1. but

...

  1. STRONGLY

...

  1. recommended.

...

  1. create

...

  1. a

...

  1. pom

...

  1. file

...

  1. (pom.xml)

...

  1. with

...

  1. the

...

  1. correct

...

  1. groupId

...

  1. and

...

  1. artifactId.

...

  1. This

...

  1. file

...

  1. should

...

  1. also

...

  1. contain

...

  1. any

...

  1. dependencies

...

  1. to

...

  1. jar

...

  1. files

...

  1. used

...

  1. by

...

  1. the

...

  1. component.

...

  1. If

...

  1. these

...

  1. components

...

  1. are

...

  1. in

...

  1. the

...

  1. standard

...

  1. maven

...

  1. repositories,

...

  1. use

...

  1. those

...

  1. dependencies.

...

  1. Otherwise

...

  1. repeat

...

  1. this

...

  1. process

...

  1. for

...

  1. each

...

  1. dependent

...

  1. component.

...

  1. provide

...

  1. your

...

  1. MIT

...

  1. Maven

...

  1. Repository

...

  1. Admin

...

  1. with

...

  1. the

...

  1. pom.xml,

...

  1. [artifactid]

...

  1. -

...

  1. [version].jar

...

  1. and

...

  1. optional

...

  1. [artifactid]-

...

  1. [version]-sources.jar

...

  1. and

...

  1. request

...

  1. they

...

  1. add

...

  1. that

...

  1. to

...

  1. the

...

  1. appropriate

...

  1. MIT

...

  1. Maven

...

  1. Repository

...

  1. for

...

  1. your

...

  1. group.

...

Once

...

this

...

is

...

done,

...

add

...

your

...

dependency

...

to

...

pom.xml

...

as

...

described

...

in

...

"Declaring

...

dependencies

...

on

...

3rd

...

Party

...

components

...

-

...

the

...

easy

...

way".

...

Declaring

...

dependencies

...

on

...

MIT

...

components

...

In

...

our

...

Continuous

...

Integration

...

environment,

...

we

...

desire

...

to

...

always

...

(or

...

nearly

...

always!)

...

build

...

apps

...

that

...

depend

...

on

...

the

...

latest

...

version

...

of

...

a

...

component.

...

This

...

ensures

...

that

...

we

...

know

...

as

...

soon

...

as

...

possible

...

when

...

a

...

change

...

is

...

made

...

to

...

a

...

component

...

that

...

breaks

...

a

...

dependency

...

from

...

another

...

app/component.

...

Thus

...

we

...

want

...

our

...

"trunk"

...

builds

...

to

...

always

...

point

...

to

...

the

...

latest

...

available

...

version

...

of

...

an

...

MIT

...

component.

...

That

...

will

...

be

...

the

...

trunk

...

build

...

of

...

the

...

component

...

itself.

...

To

...

accomplish

...

this

...

we

...

do

...

two

...

things.

...

  1. We

...

  1. specify

...

  1. a

...

  1. DEPENDENCY

...

  1. RANGE

...

  1. instead

...

  1. of

...

  1. a

...

  1. specific

...

  1. version

...

  1. We

...

  1. configure

...

  1. the

...

  1. component

...

  1. to

...

  1. use

...

  1. snapshot

...

  1. builds

...

  1. (if

...

  1. available)

...

  1. when

...

  1. building

...

  1. an

...

  1. app/component

...

  1. that

...

  1. includes

...

  1. that

...

  1. component

...

Below

...

is

...

an

...

example

...

of

...

an

...

app

...

which

...

specifies

...

a

...

dependency

...

range

...

for

...

the

...

MIT

...

component

...

edu.mit.ist.es.common:sais-common

{:=|=
Code Block
lang
xml
title
Range
dependency
example
}<dependency>
    <groupId>edu.mit.ist.es.common</groupId>
    <artifactId>sais-common</artifactId>
    <version>[0.0.0,999.999.999)</version>
</dependency>
{code}

Below

...

is

...

an

...

excerpt

...

from

...

the

...

sais-common

...

pom.xml

...

file

...

which

...

shos

...

how

...

to

...

configure

...

sais-common,

...

such

...

that

...

applications

...

which

...

depend

...

on

...

sais-common

...

will

...

use

...

snapshot

...

builds

...

when

...

resolving

...

a

...

dependency

...

range.

{:=|=
Code Block
lang
xml
title
sais-common
pom.xml
exerpt
}...
<build>
    <plugins>
        <plugin>
            <!-- because this component is a plugin, and because dev and ci
            builds always point to the LATEST SNAPSHOT, we will configure
            the maven-install-plugin to consider snapshot builds to the 
            local repo to be a release.
            -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <updateReleaseInfo>true</updateReleaseInfo>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>
...
{code}

h3. Adding your project to the Projects Directory


h2. The Release Process
When you use Moves to perform a release of a 

Adding your project to the Projects Directory

The Release Process

When you use Moves to perform a release of a component/application,

...

the

...

following

...

steps

...

happens

...

  1. Moves

...

  1. will

...

  1. check

...

  1. out

...

  1. the

...

  1. trunk

...

  1. source

...

  1. of

...

  1. the

...

  1. component/application

...

  1. from

...

  1. subversion

...

  1. Moves

...

  1. will

...

  1. parse

...

  1. the

...

  1. pom.xml

...

  1. to

...

  1. see

...

  1. if

...

  1. any

...

  1. dependency

...

  1. ranges

...

  1. are

...

  1. found.

...

  1. Moves

...

  1. will

...

  1. assume

...

  1. these

...

  1. dependency

...

  1. ranges

...

  1. are

...

  1. themselves

...

  1. MIT

...

  1. components.

...

  1. For

...

  1. each

...

  1. component

...

  1. found,

...

  1. moves

...

  1. will

...

  1. check

...

  1. out

...

  1. that

...

  1. component

...

  1. and

...

  1. recursively

...

  1. perform

...

  1. this

...

  1. set

...

  1. of

...

  1. steps.

...

  1. Moves

...

  1. will

...

  1. present

...

  1. you

...

  1. with

...

  1. a

...

  1. build

...

  1. page.

...

  1. For

...

  1. each

...

  1. component

...

  1. you

...

  1. will

...

  1. be

...

  1. given

...

  1. the

...

  1. option

...

  1. of

...

  1. performing

...

  1. a

...

  1. new

...

  1. build,

...

  1. or

...

  1. using

...

  1. an

...

  1. existing

...

  1. release

...

  1. Moves

...

  1. will

...

  1. take

...

  1. your

...

  1. input

...

  1. and

...

  1. use

...

  1. that

...

  1. to

...

  1. create

...

  1. a

...

  1. branch.

...

  1. The

...

  1. project

...

  1. version

...

  1. in

...

  1. the

...

  1. branch

...

  1. will

...

  1. be

...

  1. the

...

  1. same

...

  1. as

...

  1. the

...

  1. version

...

  1. in

...

  1. trunk,

...

  1. with

...

  1. the

...

  1. "-SNAPSHOT"

...

  1. suffix

...

  1. removed.

...

  1. Thus

...

  1. if

...

  1. your

...

  1. project

...

  1. is

...

  1. at

...

  1. version

...

  1. 2.1.5-SNAPSHOT,

...

  1. the

...

  1. branch

...

  1. version

...

  1. will

...

  1. be

...

  1. 2.1.5.

...

  1. Moves

...

  1. will

...

  1. increment

...

  1. the

...

  1. version

...

  1. in

...

  1. trunk.

...

  1. In

...

  1. our

...

  1. example

...

  1. above,

...

  1. the

...

  1. project

...

  1. version

...

  1. in

...

  1. trunk

...

  1. will

...

  1. become

...

  1. 2.1.6-SNAPSHOT.

...

  1. Moves

...

  1. will

...

  1. replace

...

  1. the

...

  1. dependency

...

  1. ranges

...

  1. in

...

  1. the

...

  1. branch

...

  1. with

...

  1. the

...

  1. versions

...

  1. that

...

  1. were

...

  1. calculated

...

  1. based

...

  1. on

...

  1. your

...

  1. selections.

...

  1. These

...

  1. can

...

  1. be

...

  1. previously

...

  1. released

...

  1. versions,

...

  1. or

...

  1. if

...

  1. you

...

  1. elected

...

  1. to

...

  1. release

...

  1. a

...

  1. new

...

  1. component,

...

  1. it

...

  1. will

...

  1. be

...

  1. the

...

  1. version

...

  1. of

...

  1. the

...

  1. component

...

  1. which

...

  1. will

...

  1. be

...

  1. released

...

  1. as

...

  1. part

...

  1. of

...

  1. this

...

  1. build.

...

  1. Moves

...

  1. will

...

  1. build

...

  1. each

...

  1. component

...

  1. for

...

  1. which

...

  1. you

...

  1. selected

...

  1. to

...

  1. build

...

  1. a

...

  1. new

...

  1. release

...

  1. Moves

...

  1. will

...

  1. build

...

  1. your

...

  1. top

...

  1. level

...

  1. component/application

...

  1. Moves

...

  1. will

...

  1. release

...

  1. each

...

  1. component/application

...

  1. that

...

  1. has

...

  1. been

...

  1. built

...

  1. to

...

  1. the

...

  1. MIT

...

  1. Maven

...

  1. repository

...

  1. Moves

...

  1. will

...

  1. commit

...

  1. the

...

  1. trunk

...

  1. changes

...

  1. (i.e.

...

  1. the

...

  1. incremented

...

  1. SNAPSHOT

...

  1. version)

...

  1. for

...

  1. each

...

  1. component/application

...

  1. that

...

  1. has

...

  1. been

...

  1. built

...

  1. Moves

...

  1. will

...

  1. commit

...

  1. the

...

  1. branch

...

  1. changes

...

  1. for

...

  1. each

...

  1. released

...

  1. component

...

  1. (i.e

...

  1. the

...

  1. release

...

  1. version,

...

  1. and

...

  1. resolved

...

  1. dependency

...

  1. ranges)

...

  1. to

...

  1. the

...

  1. [subversion

...

  1. url]/tags/releases/

...

  1. [version]

...

  1. tag

...

  1. Moves

...

  1. will

...

  1. copy

...

  1. the

...

  1. working

...

  1. branches

...

  1. for

...

  1. each

...

  1. released

...

  1. component

...

  1. to

...

  1. the

...

  1. [component's

...

  1. subversion

...

  1. url]/tags/releases/

...

  1. [version]

...

  1. tag

...

  1. Moves

...

  1. will

...

  1. remove

...

  1. the

...

  1. working

...

  1. branches

...

  1. for

...

  1. each

...

  1. released

...

  1. component

...

Thus

...

at

...

the

...

end

...

of

...

the

...

process,

...

the

...

following

...

changes

...

will

...

have

...

occurred:

...

  1. Each

...

  1. released

...

  1. component

...

  1. will

...

  1. exist

...

  1. in

...

  1. the

...

  1. MIT

...

  1. Maven

...

  1. repository

...

  1. A

...

  1. tag

...

  1. containing

...

  1. the

...

  1. source

...

  1. code

...

  1. for

...

  1. each

...

  1. released

...

  1. component

...

  1. will

...

  1. exist

...

  1. in

...

  1. [component's

...

  1. subversion

...

  1. url]/tags/releases/

...

  1. [version]

...

  1. tag.

...

  1. The

...

  1. pom.xml

...

  1. file's

...

  1. version

...

  1. element

...

  1. in

...

  1. that

...

  1. tag

...

  1. will

...

  1. have

...

  1. the

...

  1. release

...

  1. version,

...

  1. and

...

  1. any

...

  1. dependency

...

  1. ranges

...

  1. in

...

  1. that

...

  1. tag

...

  1. will

...

  1. have

...

  1. been

...

  1. replaced

...

  1. with

...

  1. the

...

  1. version

...

  1. of

...

  1. that

...

  1. component

...

  1. that

...

  1. was

...

  1. used

...

  1. in

...

  1. the

...

  1. release

...

  1. For

...

  1. each

...

  1. released

...

  1. component,

...

  1. the

...

  1. [component's

...

  1. subversion

...

  1. url]/trunk/pom.xml

...

  1. file's

...

  1. version

...

  1. element

...

  1. will

...

  1. have

...

  1. been

...

  1. incremented.

...

Creating a branch

Moves provides a facility for creating branches. If you need to branch a project, and if that project might have a release associated with it, then you should use Moves to create a branch.

When should I create a branch?

The answer to this is almost never. Branches add complexity, and changes made to a branch must be applied to the trunk. The process is subject to human error.

Valid reasons for creating a branch include

  1. Emergency bug fixes. Suppose you have example-web-app version 1.2.3 on production, and trunk is not in a releasable state. A critical bug needs fixing and you cannot wait until the next scheduled release. In this case you need to
    1. Branch the release on production (1.2.3).

...

    1. Branch

...

    1. any

...

    1. dependent

...

    1. components

...

    1. that

...

    1. must

...

    1. have

...

    1. code

...

    1. changes

...

    1. Fix

...

    1. the

...

    1. bugs

...

    1. Release

...

    1. the

...

    1. branch

...

    1. release

...

    1. Merge

...

    1. the

...

    1. fix

...

    1. back

...

    1. into

...

    1. trunk

...

  1. Concurrent

...

  1. development.

...

  1. Suppose

...

  1. you

...

  1. have

...

  1. a

...

  1. major

...

  1. change

...

  1. in

...

  1. example-web-app

...

  1. that

...

  1. requires

...

  1. a

...

  1. 6

...

  1. month

...

  1. developer

...

  1. effort.

...

  1. Meanwhile,

...

  1. the

...

  1. business

...

  1. requires

...

  1. minor

...

  1. enhancements

...

  1. to

...

  1. be

...

  1. released

...

  1. every

...

  1. month.

...

  1. In

...

  1. this

...

  1. case

...

  1. you

...

  1. should

...

  1. create

...

  1. the

...

  1. branch,

...

  1. and

...

  1. apply

...

  1. the

...

  1. minor

...

  1. fixes

...

  1. and

...

  1. releases

...

  1. to

...

  1. that

...

  1. branch.

...

    1. Merge

...

    1. all

...

    1. branch

...

    1. changes

...

    1. back

...

    1. into

...

    1. trunk

...

    1. frequently

...

    1. .

...

    1. When

...

    1. the

...

    1. major

...

    1. release

...

    1. is

...

    1. ready,

...

    1. the

...

    1. branch

...

    1. should

...

    1. no

...

    1. longer

...

    1. be

...

    1. worked

...

    1. on.

...

Branch prerequisites

  1. A branch must be created from a release tag. Thus, if you want to create a branch from trunk you should
    1. make sure trunk builds
    2. create a release of trunk (it's ok to do nothing with that release... moves just needs the tag for a branch point)
  2. For each dependent component you must decide if you want to create a branch of that component.
    1. If the dependent component does not need to change (ie you are only changing code in your application), there is nothing to do.
    2. If you wish to use the trunk version of the dependent component, then change the version of the dependency in your application back to a range (ie <version>[0.0.0,999.999.999)</version>).

...

    1. If

...

    1. you

...

    1. wish

...

    1. to

...

    1. use

...

    1. a

...

    1. branch

...

    1. version

...

    1. of

...

    1. the

...

    1. dependent

...

    1. component,

...

    1. then

...

    1. complete

...

    1. these

...

    1. steps

...

    1. for

...

    1. the

...

    1. dependent

...

    1. component,

...

    1. and

...

    1. set

...

    1. up

...

    1. a

...

    1. BRANCH

...

    1. RANGE.

...

    1. (See

...

    1. "Branching

...

    1. Example"

...

    1. below

...

    1. for

...

    1. how

...

    1. to

...

    1. create

...

    1. a

...

    1. dependent

...

    1. branch

...

    1. range).

...

Branching example.

...

Let's

...

suppose

...

we

...

have

...

application

...

example-web-app

...

which

...

has

...

version

...

2.5.3

...

deployed

...

to

...

production.

...

It

...

depends

...

on

...

edu.mit.ist.es.common:sais-common:3.1.5

...

(the

...

sais-common

...

component

...

version

...

3.1.5).

...

Let's

...

suppose

...

it

...

also

...

depends

...

on

...

edu.mit.ist.es.components:example-component:1.2.3

...

(example-component

...

version

...

1.2.3).

...

A

...

bug

...

is

...

found

...

in

...

production,

...

and

...

the

...

trunk

...

is

...

not

...

in

...

a

...

releasable

...

state

...

(perhaps

...

we

...

have

...

a

...

bunch

...

of

...

untested

...

changes).

...

We

...

need

...

a

...

release

...

as

...

soon

...

as

...

possible.

...

It

...

is

...

found

...

that

...

the

...

bug

...

fix

...

requires

...

changes

...

to

...

sais-common

...

and

...

example-web-app,

...

but

...

not

...

to

...

example-component.

...

(In

...

trunk,

...

example-web-app

...

is

...

at

...

version

...

2.6.0-SNAPSHOT,

...

sais-common

...

is

...

at

...

4.1.2-SNAPSHOT

...

and

...

example-component

...

is

...

at

...

1.2.4-SNAPSHOT).

...

The

...

following

...

will

...

need

...

to

...

occur.

...

  1. Use

...

  1. moves

...

  1. to

...

  1. create

...

  1. a

...

  1. branch

...

  1. of

...

  1. example-web-app

...

  1. version

...

  1. 2.5.3.

...

  1. (This

...

  1. will

...

  1. become

...

  1. version

...

  1. 2.5.3b1.0-SNAPSHOT)

...

  1. Use

...

  1. moves

...

  1. to

...

  1. create

...

  1. a

...

  1. branch

...

  1. of

...

  1. sais-common

...

  1. component

...

  1. version

...

  1. 3.1.5.

...

  1. (This

...

  1. will

...

  1. become

...

  1. version

...

  1. 3.1.5b1.0-SNAPSHOT)

...

  1. Check

...

  1. out

...

  1. the

...

  1. example-web-app

...

  1. branch

...

  1. code

...

  1. (from

...

  1. [example-web-app-svn-url]/branches/releases/2.5.3b1).

...

  1. Check

...

  1. out

...

  1. the

...

  1. sais-common

...

  1. branch

...

  1. code

...

  1. (from

...

  1. [sais-common-svn-url]/branches/releases/3.1.5b1).

...

  1. edit

...

  1. the

...

  1. sais-common

...

  1. dependency

...

  1. in

...

  1. example-web-app's

...

  1. pom.xml,

...

  1. so

...

  1. that

...

  1. Code Block

...

  1. lang

...

  1. xml

...

  1. title

...

  1. Range

...

  1. dependency

...

  1. example

...

  1. From:
    <dependency>
        <groupId>edu.mit.ist.es.common</groupId>
        <artifactId>sais-common</artifactId>
        <version>3.1.5</version>
    </dependency>
    To:
    <dependency>
        <groupId>edu.mit.ist.es.common</groupId>
        <artifactId>sais-common</artifactId>
        <version>[3.1.5b1.0, 3.1.5b1.999)</version>
    </dependency>
    

...

Your

...

project

...

should

...

now

...

build

...

and

...

deploy.

...

Moreover,

...

Moves

...

will

...

allow

...

you

...

to

...

select

...

a

...

branch

...

build

...

after

...

you

...

commit

...

all

...

of

...

your

...

changes.

...

Once

...

the

...

branch

...

has

...

been

...

created,

...

the

...

release

...

process

...

is

...

much

...

like

...

the

...

trunk

...

release

...

process.

...

However,

...

instead

...

of

...

the

...

versions

...

incrementing

...

from,

...

say

...

1.2.3-SNAPSHOT

...

to

...

1.2.4-SNAPSHOT,

...

they

...

will

...

increment

...

from,

...

say

...

1.2.3b1.0-SNAPSHOT

...

to

...

1.2.3b1.1-SNAPSHOT.

...

This

...

allows

...

you

...

to

...

perform

...

multiple

...

releases

...

on

...

the

...

branch,

...

until

...

the

...

branch

...

cycle

...

is

...

completed.

...

The

...

corresponding

...

released

...

versions

...

will

...

be

...

1.2.3b1.1,

...

1.2.3b1.2,

...

1.2.3b1.3

...

etc.

...

Screenshots

TODO