I have two maven projects:
- One builds a few OSGi bundles and creates a local p2 repository containing them
- The other builds an Eclipse plugin with tycho using these bundles
When I execute them separately, everything works: the first execution creates the repository, and the second can use it.
But I want to create a single pom executing both. The simple approach:
<modules>
<module>p2-repository-generator</module>
<module>tycho-project</module>
</modules>
Doesn't work, because tycho tries to use the repository generated by the first pom even before it exists as described here.
Can I execute two maven tasks sequentially using maven, without external tools? Or can I delay tycho's dependency hook to a later point in the build?
To clarify:
tycho-project
depends onp2-repository-generator
, so it is executed after it.- but Tycho uses a custom lifecycle participant, which tries to resolve p2 dependencies with an
afterProjectsRead
callback - which is too soon, since the p2 repository will be there only afterp2-repository-generator
built it. - This aggretor works after I execute
p2-repository-generator
once manually, because thentycho-project
is able to find the p2 repository generated by it
As you correctly noted, Tycho does things very early in the build, which leads to problems if you generate content in the same build to be used by the Tycho build. A workaround for this problem is to wrap the part of the build using Tycho in a maven-invoker-plugin call.