Hello Miles,
I think this will go pretty well with tycho.
After thinking a little bit more about it, I think it could be best to
go for an option using 2 separate maven modules:
- 1 module "scala-ide" for everything except of the GUI tests
- 1 module "gui-tests" for the GUI tests
In maven this could look like this:
<git-repo-root>/pom.xml <-- parent module of everything
<git-repo-root>/scala-ide/pom.xml <-- contains all productive
plugins, dependencies, ...
<git-repo-root>/gui-tests/pom.xml <-- contains all GUI tests for the
scala-IDE
The reason for this is, that not everybody working with mvn might be
as familiar as required with profiles:
http://maven.apache.org/guides/introduction/introduction-to-profiles.html
Very likely the simplest thing to start with is without profiles and
segment the modules to be built using a plain-old folder/(sub)module
structure.
Profiles still can be added later, e.g. depending on the build-task to
be performed.
When separating the productive modules from gui-test modules like this
would allow everybody to build the ide pretty simple:
cd <git-repo-root>/scala-ide
mvn install
--> this would build, perform-non-gui-tests and install everything
needed to create the update-site.
The submodules of
<git-repo-root>/scala-ide/pom.xml
would be the already existing modules:
<git-repo-root>
|- scala-ide
|- scala-plugin
|- scala-library
|- scala-plugin-aspects
Each having it´s own pom.xml, i.e.
<git-repo-root>/scala-ide/pom.xml
will be the parent pom of
<git-repo-root>/scala-ide/scala-plugin/pom.xml
<git-repo-root>/scala-ide/scala-library/pom.xml
<git-repo-root>/scala-ide/scala-plugin-aspects/pom.xml
The build result of module scala-ide likely is something like
<git-repo-root>/scala-ide/scala-ide-plugin/target/update-site/...
To invoke the gui tests ("downloading" and installing the IDE from the
previously built local update site) someone could do the following:
cd <git-repo-root>/gui-tests
mvn test
--> this would run all GUI tests located in submodules like
<git-repo-root>
|- gui-tests
|- squish-tests
|- pde-tests
|- SWTbot-tests
Each having it´s own pom.xml, i.e.
<git-repo-root>/gui-tests/pom.xml
will be the parent pom of
<git-repo-root>/gui-tests/squish-tests/pom.xml
<git-repo-root>/gui-tests/pde-tests/pom.xml
<git-repo-root>/gui-tests/SWTbot-tests/pom.xml
If someone does not have a licence of Squish, he can just invoke
individual GUI tests like this:
cd <git-repo-root>/gui-tests/pde-tests
mvn test
Later we can still add mvn profiles in
<git-repo-root>/gui-tests/pom.xml
which might automatically select the tests to be performed depending
on the licence status.
Summary: This is the full directory structure I´d suggest:
<git-repo-root>
|- scala-ide
|- pom.xml
|- scala-plugin
|- src
|- main
|- test <<-- non-gui-tests only
|- scala-library
|- main
|- test <<-- non-gui-tests only
|- scala-plugin-aspects
|- main
|- test <<-- non-gui-tests only
|- gui-tests
|- pom.xml
|- squish-tests
|- pom.xml
|- src
|- test <<-- gui-tests only
|- pde-tests
|- pom.xml
|- src
|- test <<-- gui-tests only
|- SWTbot-tests
|- pom.xml
|- src
|- test <<-- gui-tests only
Do you already have plans how the directory structure after the repo-
reorg will look like?
Cheers,
Chris