I am trying to get the Maven standard directory layout on my Eclipse project with the expected
src/main/java
src/main/resources
src/test/java
src/test/resources
However, all I am seeing after building the project is the following:
Can someone give me some specific instructions as to what I need to do to fix this?
As I can deduce from your screen-shots
the Eclipse project is correctly configured to be a Maven project (it has the Maven nature - that can be seen by the M icon on the project folder icon)
the M2Eclipse plugin is correctly up-to-date
Now, the first error is that your POM is incorrect. You should remove the declaration <sourceDirectory>.
Then my guess is that you arrived at your current situation because, in Eclipse, you created a "Java Project" and then converted it to a "Maven Project" by right-clicking and selecting "Configure > Convert to Maven Project" (what makes me thinks that is your current source folder being src, which is the default after creating a "Java Project").
What you seem to be missing is a clean refresh of your project. You should right-click the project, go into "Maven > Update Project...", and click "OK". This should resolve your problem.
If this does not work for some reason, I suggest you remove your current project (from the workspace and the content on disk) and, instead of creating a "Java Project", create a "Maven Project", by going to "File > New... > Maven Project". The M2Eclipse plugin will kick in and this new project will be correctly configured.
Remove the <sourceDirectory> tags. You are using the defaults and these do not need to be declared.
Also, as the esteemed #Tunaki mentioned, use the M2Eclipse (m2e) plugin or right-click the project and select "Enable Dependency Management". If you are using Eclipse Luna or later, m2e is already included. If you don't do this, you'll be able to build just fine from the Command Prompt, but Eclipse will be confused.
Related
I have a maven multi module project which has 5 modules. Some of my modules depend on one or more other modules, I am successfully able build the project and in eclipse also I am not getting any errors. However there is one problem which is bothering me, when i ctrl + click in my code and the class is defined on some other project eclipse does not open the file in the editor. I know i can attach the source code using maven but still i wont be able to make changes to that file.
Is there any way to be able to link projects in eclipse through maven?
Is there any way to be able to link projects in eclipse through maven?
That behaviour is the default. To check if for some reason that default is not in effect for your project, right click your project (the project you want to jump from) and go to "Maven". If there is an option "Disable Workspace Resolution" the workspace resolution is switched on, meaning you can theoretically jump from that project.
If you still cannot jump, then the project you want to jump to is not in your workspace. Take into account that for eclipse to identfy one project as dependency of another, everything including version must match.
Also check what rest_day said. You must have the projects importet as maven projects, but running eclipse:eclipse is not required anymore with current (up to ca 2 year old) eclipse.
Did you import the projects as Maven projects?
Also, could you go to the root of the project and run mvn eclipse:eclipse
eclipse:eclipse
Full name:
org.apache.maven.plugins:maven-eclipse-plugin:2.10:eclipse
Description:
Generates the following eclipse configuration files:
.project and .classpath files
.setting/org.eclipse.jdt.core.prefs with project specific compiler settings various configuration files for WTP (Web Tools Project), if the parameter wtpversion is set to a valid version (WTP configuration is not generated by default)
If this goal is run on
a multiproject root, dependencies between modules will be configured
as direct project dependencies in Eclipse (unless useProjectReferences
is set to false).
Instead of Ctrl+Click, click on the identifier and press F3. If you now see a red text reading "Current text selection cannot be opened in an editor", you've been hit by this bug.
See this question for a solution: How do I get rid of "Current text selection cannot be opened in an editor" in Eclipse?
I have a parent Maven project that consists of several other projects. When i am building the project in command line everything is fine.
Then i open my Eclipse and the workspace is full of errors (which are actually false positives).
In order for me to get rid of this errors i have to do a "Run As... -> Maven install" and then a "Maven -> Update project..." on every project from within eclipse.
Is there any way or any plugin that can actually refresh the workspace and update the maven dependencies on each project, so that i can avoid this tedious operation?
Does anyone else face the same problem when using Eclipse as an IDE for his/her maven projects?
UPDATE
It seems (as in most of the cases with eclipse) that the problem was with the M2E plugin. Somehow the plugin was picking some settings in the .metadata folder in my workspace. I deleted the contents of the folder, restarted eclipse, re imported everythings and now it seems to behave as expected.
Hopefully, in newer version Eclipse will support Maven in a proper manner.
It could be that some of the files are just out of date. When I get this I do a refresh of the affected projects and then clean the workspace (Project -> Clean...) cleaning all projects.
If the refresh and clean don't do the trick, then I'd suspect that your maven settings in Eclipse point to a different set of repositories than does the command line maven's settings.xml. Go into the maven property page in Eclipse preferences and confirm that you're using the same settings.xml (re-select just to be sure).
I checked out a Maven project folder from SVN. It is coming up as folders in the Package Explorer, and when I right click -> Build Path -> no actions available.
Is there anyway to add the source folder to appear as a package?
The project is not set up as an Java or Maven project inside Eclipse. You can apply the Maven and Java nature afterwards in the project properties, you could run mvn eclipse:eclipse outside of Eclipse and import the created Eclipse project into your workspace (it could even exist as option in the project's context menu under "Maven", depending on how the project is setup right now).
Or, much easier, you just checkout a Maven project from SVN. Within the "New Project..." dialog there should be an option "Maven > Check Out Maven Projects from SVN". Then it will be configured automatically.
I have a maven web project that imported into eclipse. I have another maven project (generates a jar file) that the web project depends on.
Both of these projects work correctly when executed from the command line. mvn package creates a war file which pulls the jar it depends on from the maven repository for the web project. mvn package creates a valid jar file when run for the library.
When I import the library into Eclipse, m2e recognizes that the web project depends on the library and updates parts of the project to take advantage of the fact that both maven projects are hosted within a single Eclipse workspace. The "Maven Dependencies" section of the "Libraries" tab of the "Java Build Path" preference for the web project removes the library jar file and replaces it with the library project. As the library is updated in Eclipse, the web project recognizes those changes without having to install/deploy the library.
The problem occurs when I attempt to run the web application in Eclipse. Because Eclipse is actually building the Web project against the version of the library in Eclipse, it does not deploy the library file from the maven repository, it creates a new jar file that's a snapshot of the current version of the library in Eclipse. All of this has generally worked well for me, but on the project I'm currently working on there's a problem with the jar file that Eclipse is creating. Instead of inserting the class files for the library, it appears that it's taking the "src" directory of my Maven project and zipping it up as the jar file. The contents of the jar file look something like:
-main
-java
-com
-... *.java
-resources
-...
-test
-java
-com
-... *.java
Where I would expect it to look more like:
-com
-... *.class
Since I have successfully used this type of project before, I'm trying to figure out if there's something I need to configure or if I've just run into a bug.
I'm using the latest update of m2e (1.0.200.20111228-1245) on Eclipse Indigo (Build id: 20120216-1857).
In Eclipse, we can disable the "Workspace Resolution" so that it will use our dependencies directly from the local maven repository as the following steps: -
Disable Workspace Resolution
Right click at the project inside the eclipse
Select "Maven" from the context menu.
If it display "Disable Workspace Resolution" which means it is enable. We click it with purpose to disable it. Please note, after that it will display "Enable Workspace Resolution" which means we have disabled already.
We may need to update the project configuration and other related dependencies as the following steps: -
Update Project Configuration
Right click at the project inside the eclipse
Select "Maven" from the context menu.
Click the "Update Project Configuration..."
The "Update Maven Dependencies" windows will be displayed.
Select the required projects and click "OK".
Update Dependencies
Right click at the project inside the eclipse
Select "Maven" from the context menu.
Click the "*Update Dependencies"
The "Update Maven Dependencies" windows will be displayed.
Select the required projects and click "OK".
Please take a note, since we not use the related dependencies directly from the workspace anymore, It will use directly from our local maven repository. Then all related artifacts should be installed to our local maven repository by using the following command line.
mvn install
Anyhow it can be done by using the context menu inside the Eclipse as the following steps:-
Right click at the project inside the eclipse
Select "Run As" ---> "Maven Install".
Here's the solution that I came up with.
It appears that in my case the rules for the "Deployment Assembly" for the library project are still followed.
To change it go to the library properties->Deployment Assembly
In my case that just contained a mapping from '/src' -> '/'. I removed that entry and replaced it with a mapping from '/target/classes' -> '/' and '/src/main/resources' -> '/'.
Once I had that mapping in place, when the jar file was deployed it contained exactly what I had configured in the Deployment Assembly. That allows Eclipse to continue to be used without explicitly republishing the library for every change. But, it doesn't seem to auto redeploy to tomcat for me when the library is updated -- I still need to manually restart tomcat for library changes to be reflected.
It's still not entirely clear to me what's going on with this project. I do have previous projects that have a similar structure, and in those projects the Deployment Assembly has not been updated to explicitly include the class files and yet the proper jar file is still deployed.
I am facing a problem in setting my eclipse project.
The problem is whenever I am creating a new project and import the code.Eclipse is not resolving the packages which are present in the jar files which are present in the C;/..../user/.m2/repository.
Hence it's giving a lot of compilation errors until I add all the required jar files manually in the build-path by going to "Add External Jars"
I saw that M2_REPO is present in my Eclipse classpath.But still it is not resolving the packages.
Please suggest how this problem can be resolved.
Gaurav
I've been having a similar error in Eclipse on OSX. In Eclipse on the Mac, there is no "Maven" entry when you right-click on a project in the explorer.
However!
I just discovered that if I right click and then click "Validate", it suddenly magically resolves all the dependencies. No idea why, but maybe this will help.
I've had this issue on Eclipse Kepler EE which comes prebuilt with m2e, I finally got it working by doing the following on each project:
Right click on the Project
Select Properties
Select Maven
Uncheck the option that says: Resolve Dependencies from Workspace projects
It should pop up with a box that says Maven setting has changed. Do you want to update project configuration. Click Yes to this.
To confirm:
Right click on the project
Select Properties
Select Java Build Path
Check the Libraries tab under Maven dependencies that all the jar you
expected are now there.
close your project, and remove your project settings files: .project, .classpath, .settings/. Then re-import this project. It will be ok.
Though this answer is late. But it can help the future audience.
You can give it a try using Project(Right-Click) -> Maven -> Update Project. To select all or the number of projects you want to update.
This worked for me.
Have you put all needed dependencies in the pom.xml? Even if the Jars are already in your local repository, each project needs its dependencies mentioned in the pom.xml to resolve the dependencies. If you do that, m2eclipse will automatically resolve the build path.
Another possibility. Are you running Eclipse using JDK or JRE - the default is JRE. You will see a warning in Eclipse console, if so.
maven eclipse plugin will not work correctly unless run with JDK.
I just had a similar problem. The JDK was there, the problems view was set to Show All, and yet there were hundreds of unresolved type errors. Not even Refresh (F5) would work.
In the Project|Properties|Java Build Path|Libraries window I was seeing only the JRE System Library, but not the desired "Maven Dependencies" entry. And "Maven Dependencies" was also missing from the Package Explorer view as well.
I finally fixed this by right clicking on the project in the Package Explorer, selecting Maven from the menu, then selecting "Update Project Configuration." This added "Maven Dependencies" and all the errors went away.
This was nice because prior to this fix I had to treat Eclipse like a dumb editor and run mvn compile on the commandline to find errors.