Petter,

I think that people commonly don't have this problem if they are using maven, as maven modules produce artifacts that other modules can depend on. What you describe seems like a simple case where both server and client depend on common. So, with maven, when you build server the common.jar (or whatever) will be on the classpath at compilation time.

I can understand that if you have something working with Ant it looks like hardwork to migrate to maven, but for me the main power of maven is with multimodule projects.

David

On 18 May 2007, at 16:20, Petter Måhlén wrote:

Hi again,

No answer to this one in a few days, so I would have to suppose that it is not possible to solve this using standard Continuum features? In the mean
time, our solution is a symlink in Continuum's working directory to a
checked-out version of the 'common' project. When the builds fail due to a change in the common part, we simply have to update that and we can get by,
more or less.

From our perspective, this type of project linking is a necessary feature of a continuous integration server. I've been very much in favour of Continuum over Cruisecontrol due to its simplicity of configuration. But Cruisecontrol lets me solve this particular problem, so if there really is no solution using Continuum, I guess that Cruisecontrol has to be the tool we use after
all.

I have added this as a feature request to JIRA. I really hope it can be implemented, because it is a necessity for us and I don't at all enjoy the
prospect of going back to the complexity of configuring Cruisecontrol
again.. :(

/ Petter

-----Original Message-----
From: Petter Måhlén [mailto:[EMAIL PROTECTED]
Sent: Tuesday, May 15, 2007 3:32 PM
To: [email protected]
Subject: How to handle inter-project dependencies

Hi,

We have a setup that works well during development but
doesn't agree with
Continuum's philosophy of how to handle things - or so it
seems to me. I
think there is a point in doing it another way than we are,
but I am not
sure how. Hopefully, somebody here can enlighten me. :)

We have three projects:

1. 'common', which basically contains an XML schema
definition file for code
generation with XJC (other things as well, but that's
probably not relevant
for the issue at hand).

2. 'client', which is built using Ant (for historical
reasons, would have
preferred Maven but no time to fix that yet). One step of the
build looks
like so:

        <target name="generate-xsd-source">
                <mkdir dir="${xjc.gen.dir}" />
                <exec executable="${xjc.exe}">
                        <arg value="-p" />
                        <arg value="se.jadestone.hc.client.database"/>
                        <arg value="-d" />
                        <arg value="${xjc.gen.dir}"/>
                        <arg
value="${common.dir}/src/main/schemas/database.xsd"/>
                </exec>
        </target>

In our local environments, '${common.dir}' points to a
directory where the
source code of the 'common' project resides (../common by default).

3. 'server', which is built using Maven, and which contains
the following
dependency:

  ...
  <build>
     ...
     <plugins>
                <plugin>
                        <groupId>com.sun.tools.xjc.maven2</groupId>
                        <artifactId>maven-jaxb-plugin</artifactId>
                        <executions>
                                <execution>
                                        <goals>
                                                <goal>generate</goal>
                                        </goals>
                                </execution>
                        </executions>
                        <configuration>
        
<generatePackage>se.jadestone.hc.client.database</generatePackage>
        
<schemaDirectory>../common/src/main/schemas</schemaDirectory>
                                <strict>true</strict>
                                <verbose>true</verbose>
                        </configuration>
                </plugin>
     </plugin>
  </build>

Since we cannot know (I think) which directory name Continuum
will choose
when checking out and building the 'common' project, both of
these builds
fail. As far as I have been able to figure out, both the XJC
tool and the
maven-jaxb-plugin require that we specify an explicit path to
the file to
generate code from, so it doesn't seem to be an option to use
the jar file
that we actually build from other things in the 'common'
project. I would
like to get away from using explicit paths the way we are,
but I am not sure
how.

Does anybody have a solution to this problem? We're using
1.0.3, by the way.

Thanks in advance,

Petter





Reply via email to