开发者

Maven m2eclipse detect changes in dependecy in workspace and automatically install

开发者 https://www.devze.com 2023-04-01 05:00 出处:网络
I found an annoying issue working with m2eclipse in Eclipse. My workspace contains 2 projects, an application A and a library B. The application A POM has B as a dependency and everything works corre

I found an annoying issue working with m2eclipse in Eclipse.

My workspace contains 2 projects, an application A and a library B. The application A POM has B as a dependency and everything works correctly. (The project dependecy is found and used when I build the application)

But if I change some code in project B and I forgot to mvn:install it, when I build the application it uses the last built version of the library and it loses my last changes.

Is there a way to force Maven / M2Eclipse to check if the source code of the dependecy is new开发者_运维技巧er than the last version built, and to install it when installing/ deploying the main application?

Or maybe my approach is wrong or is something obvious that I'm missing?


You can tell m2eclipse to use resolve dependencies from the workspace rather than through the normal mechanisms. In your project properties (NOT workspace properties), select Maven->Resolve dependencies from Workspace projects.

Maven m2eclipse detect changes in dependecy in workspace and automatically install

This will mean that when you change B and subsequently build A, the changes should be picked up automatically.

If, however, you build outside Eclipse, you'll have to do the normal mvn install to get the correct dependencies.


I don't know of a way to tell maven to build the library first, then build your project. You could put two maven commands into a script and run the script.

Alternatively, you could put both projects inside a maven parent project, and then build the parent. This causes all child project to be built too (so in your case the library, and the application).


I think you have couple of options here

  1. If you can change the maven project set up, I would suggest you to use maven multimodule

  2. Option two might solve your problem but still involves a manual stop when you change your dependent project B, Do this on for your dependent project in eclipse

  3. Select Library B ==> Properties ==> Maven ==> in the input box under Goals to invoke after project clean: ==> enter : install

  4. To deploy any change that you made to Project B in eclipse to maven local/remote repo, You have to run Clean build in eclipse, This will deploy the latest Library B to the maven repository
  5. Also make sure your Library B version is a SnapShot during the development


If you are looking to run the latest snapshots on your local machine you should try to set things up to launch directly from Eclipse.

Apart from avoiding the problem you originally posted about, it also has other advantages.

  • It will save you a lot of time by not having to perform intermediate build steps.
  • You can start and stop servers without having to leave your IDE.
  • The Eclipse console has extra features that you don't get from the system console.
  • You don't have to modify your start scripts to attach a debugger.
0

精彩评论

暂无评论...
验证码 换一张
取 消