[jsword-devel] Maven, ant, ivy, etc.

DM Smith dmsmith at crosswire.org
Sat Dec 11 07:14:36 MST 2010

I think that it is important that "build" not get in the way of participation. So I think that we need to go ahead with maven support as another way. As long as you (or someone else) are willing to step up to on-going maintenance of the additional build mechanism and document it well enough for simple changes, go for it.

There are a couple of problems to solve with an implementation:
A) Familiar build/deploy environment
**Eclipse folk (and maybe other IDE folk) are used to the code not being broken from the outset.
**Ant folk expect to "ant all" as a first step and then use a text editor to edit the files.
**Maven folk are used to code being broken until maven is run and dependencies are brought in.

B) dependency on 3-rd party jars
**We need a mechanism to include jars that are not available in maven (or other aggregating) repositories, but are available directly from the source project. Examples for us: JDOM 1.1.1 has a method that give us a huge performance increase. ICU 4.6 just came out.
** Maintaining the jars in SVN is helpful, but it bloats the server as no copy is ever actually deleted. And it serves no useful purpose.
** Having the jars immediately available on checkout provides an immediate oob build experience.

C) low cost of checkout for translators
Currently a translator needs to download all the included jars to do a translation. This is a high bar

There is a mechanism in SVN called svn:externals that I think we might be able to take advantage of and make everyone happy.
I don't know svn:externals well enough, but my understanding is that it is a way to say that a imports b.

My thought is that we have a jsword-dependency that houses the 3-rd party jars and their source. This would make it easy for a translator as they don't have to have a long download. As it is an svn move, it does not cause bloat, and pushes the bloat problem to the future.

Then jsword-mvn that uses svn:externals to bring in the few jars that are not externally available. This would use maven to do build and deploy and would be a central location for all things maven.

A note on ivy. It is not a build mechanism, it leaves that to ant. It extends ant so that it does dependency management and iirc, deployment management. It also can generate maven POM files.

Another thought: Can we set up a maven repository of the JSword jars and its dependencies on the CrossWire server? Would this be a good idea? I don't mind if they are mirrored elsewhere.

Let's keep this going until we have a working implementation.

In Him,

On Dec 11, 2010, at 6:29 AM, Chris Burrell wrote:

> Hi All
> There are Ant fans, Maven fans. People who want to use Ant with Ivy. I'm a Maven fan. And think everyone should go the Maven way for all the benefits it provides!
> However, it's quite a big decision to move from one to the other and I don't think both work together very well, as one has to maintain 2 builds (which as we've seen can be difficult - the maven currently being broken). Clearly lots of people use Ant and aren't familiar with Maven (I was like that). Can I suggest a compromise:
> http://maven.apache.org/ant-tasks/examples/write-pom.html
> http://www.jonnyreeves.co.uk/2010/01/automatically-generating-a-maven-pom-file-with-ant/
> The main idea behind maven is that like Ivy is can do your dependency management. The POM file describes the project, the type of file associated with it (jar, war, sources, etc.) and all its dependencies. I think the above link would be a good compromise.
> It tries to generate the POM from what it knows of the Ant build, and then deploy to a repository. Would someone be willing to see if they can get that working in the ant build (i'm not very familiar with that). And I'll see if we can a maven repository set up somewhere external so that projects currently using Maven and JSword can download releases straight from there...
> In summary, 
> let's continue using Ant to build JSword. 
> For those people who prefer using Maven (me), let's ensure they can build the maven POMs and JSword library easily locally, 
> and better let's try and have the JSword libraries deployed widely on the common Maven repositories.
> Chris
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/jsword-devel/attachments/20101211/780502f2/attachment-0001.html>

More information about the jsword-devel mailing list