Maven project not being treated as Java in Eclipse - eclipse

I'm working on a project that has lots of different Maven projects. I've been doing a bunch of JUnit testing on these projects, and usually this goes well. I open up Eclipse, right click in package explorer->Import... Existing Maven Projects and I'm able to import the project fine. I can build, drill down to src/test/java... Right click on the file and do a Run As JUnit test. Every now and then though, I can't get this to work. If I right click to do a Run As, all I get is AspectJ/Java application. There's no JUnit tests.
I noticed that the icon next to the project folder only has an M and a folder icon, whereas with projects that do work, there's a folder, M, AND a AJ. I've also noticed that it doesn't seem to sort the files into their packages like normal Java projects. It seems like it's not treating the project as an AspectJ project. How do I get Eclipse to recognize this Maven project as a Java project?

Several of the existing answers should work, but those suggesting to add a Java facet will only work if your project already is of (or you want to convert it to) a faceted nature, and the one suggesting you change your pom.xml will only work if you then re-import your project as a maven project.
If you'd like to "fix" your existing project, i.e. add a Java nature without converting it to faceted form and without deleting and re-importing, just edit your .project file (externally, or with the Navigator view in eclipse, as it won't show up in your package explorer) and add the java builder and java nature to the existing maven builder/nature:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>yourprojectname</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<!-- add this build command -->
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<!-- this would've already been there -->
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<!-- add this nature -->
<nature>org.eclipse.jdt.core.javanature</nature>
<!-- this would've already been there -->
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
Note the different capitalisation (javabuilder but maven2Builder, javanature but maven2Nature).
As soon as you save, it should re-build automatically. You may have to manually add any source folders (Project properties -> Java Build Path -> Source tab -> Add Folder....

Right-click on Project -> Properties -> Project Facets, then choose all facets that apply for your case (e.g. java).

mvn eclipse:eclipse will create necessary .project files which will add java nature & other properties to the project

I was facing the same problem and the steps below solved it in my case:
1- Open the pom.xml of the problematic project.
2 -In the overview tab, check the Artifact/Packaging settings.
3- If it is set to "pom" change it to "jar".
4- Save your changes and then delete the project from eclipse only and re-import it.
Hope that helps!

It depends on the Eclipse project facet properties (if you are using Java EE), I suggest you right click on project properties and see which facet is defined for your project.

I faced the same problem(after importing pom.xml to eclipse,the project is not treated as a java one,and there is only "maven project builder" in project builders property,but no "java builder") in eclipse luna.
Re-importing maven project after deleting ".settings" folder and ".project" file did not work.
Re-importing after a workspace switch worked for me.

I talked to a co-worker and I was able to "fix" the problem. I did a delete from Eclipse (not from disk) and immediately re-did the Maven import and now it magically works.
It seems like if there was an error with the pom.xml, particularly if the parent version was wrong, that the maven project doesn't get imported/created properly. Once I fixed the problems in the POM, the project would build fine without any problems but it was still only a Maven project. Once I removed it and re-imported it, THEN it treated it as a Maven/AspectJ project.

Check the pom.xml file for projects that don't get the AspectJ nature (AJ on the project). Are they missing the AspectJ-Maven plugin? They should have a section like:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<!-- use this goal to weave all your main classes -->
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<complianceLevel>1.6</complianceLevel>
</configuration>
</plugin>
Also take a look at his question: Maven/AJDT project in Eclipse

There are two ways this can be achieved.
1) By Changing the project nature.
Right-click on Project -> Properties -> Project Natures, then choose all natures that apply for your case (e.g. java).
(OR)
2) By updating the .project file and add all the natures that are required for the project. This .project file is located at the root folder of the project. If the file does not exist for any reason, create a new file, and add the sections for each nature that is required e.g., as follows.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>yourprojectName</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

I know that this question was a long time ago...
I just resolved the issue by these 2 steps below.
run cmd "mvn eclipse:eclipse" in the root directory of the project
right-click on the project in eclipse then select "import as project"

My five cents...
In my case I was 'losing' always the 'Java' nature of the project because the pom file was set to 'package as ear'. There was no error or warning message though, which would be nice to have. As soon as I changed the package to 'jar' I could set the nature of the project to Java and it is persisted.

I also tried all the approaches described in this thread. Modifying only .project is not enough because the maven libraries will not be used for building the project and the project build will fail. mvn eclipse:eclipse will create a long and useless .classpath without actually using m2e.
The easiest way is to create a new java project, convert it to the Maven project and open the .project and .classpath for this new project. Then make similar changes for the imported Maven project.
The important changes for the .project file have been described but in order to use the Maven dependencies in Eclipse something like this should be in the .classpath file
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
Using facets is not an option in this case because with facets Eclipse doesn't use m2e and the maven dependencies. Again the dependencies with facets have to be managed manually.
I tried all this with Eclipse 4.6.2 Neon.

I had the same problem. In my case it was some defect in eclipse workspace. I recreated it (deleted .metadata directory) and that fixed the issue.

If you have tried Amos M. Carpenter's solutions on the .project and didn't work, go to Project -> Properties -> Project Nature and Add... Java, Apply and Close button.

Nothing above helped me. After hours of trying (shortly before crying) I imported the projects not by "Import from existing maven projects" but instead with "Projects from Git".
Everything is fine now. The Java Projects are Java Projects again!

Right click the project and click on the Properties --> Select Maven --> (In active maven profiles) give "pom.xml", Apply and close. enter image description here

Go to u r project folder and delete .settings
and rebuild the maven application
then try with running project
Good Luck

Related

Scala Eclipse IDE won't bring in external dependencies with Gradle

I usually use IntelliJ and SBT for my Scala projects, and am forced to use Eclipse with Gradle for a new project, both tools I'm finding to not be well suited to developing Scala.
I'm using Scala IDE 4.6.1, and sometimes when I import an existing Gradle Scala project I've cloned from a Git repo, it refuses to pull in the external dependencies listed in my build.gradle listed in the dependencies {... } block. My steps for import are:
File->Import... ->Gradle/Existing Gradle Project- > Next ->
I Select the cloned parent dir as the project root directory
Click next and insure my Local Installation Directory is set to the proper place for Gradle: (C:\Program Files (x 86)\Gradle 4.6)
Click Finish, and once everything is brought in, I right click the project folder in the project explorer, select the gradle folder, and
click "refresh gradle project"
Sometimes this works, and sometimes it doesn't. When it works, it brings in 3 folders into the project:
JRE System Library, Scala Library Container, and Referenced Libraries.
When it doesn't work, Referenced Libraries is missing, and the code red lines all the external dependencies of the project. Any ideas on how to fix?
Got the fix. So, if experiencing the above issues after following those steps:
Be sure in the project itself the .project file looks like the following:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>YOUR PROJECT NAME</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.scala-ide.sdt.core.scalabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.scala-ide.sdt.core.scalanature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>
Then, derived from this answer in another thread, from your command line, navigate to just under the top level of the project folder and execute gradle cleanEclipse eclipse
Now the "External Libraries and Dependencies" OR "Referenced Libraries" should be viewable as a dropdown.
Now, in Eclipse, under the gradle tasks area, it may or may not say there are no gradle projects in the workspace. Even if your projects are viewable in the lefthand projects pane, you will have to re-import them following the steps 1-4 outlined in the original question.
Wait for it to finish and that should do it.

Eclipse doesn't clean or build any projects

I'm running Eclipse Neon. Whenever I click on any of my projects and try to click clean or build it doesn't allow me to - it is greyed out. It doesn't matter if I make any changes to the code or do anything else, it never gives me the option to clean/build.
It seems you have only general projects without builders: right-click on a project and choose Properties. In the Properties for ... dialog, in Builders look if there any builder listed. Without builders, your projects are probably configured incorrectly.
Builders (executed when project files are changed, e. g. incremental Java compiler) and natures (specifie which tooling is available) are set/stored in the .project file (which are hidden in the Projects/Packages Explorer view, but shown in the Navigator view and which can be edit with a text or XML editor). For example, the .project file of the plain Java project with the name and project folder Foo has the following content:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Foo</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
If available, you may try right-click on a project and choose: Configure > Configure and detect nested projects...

How to solve jars conflict with different libraries?

i am using Repast Simphony in my project and its library contains many jars. meantime, i am using GeoTools and they are conflict because Repast Simphony employ geotools 2.3.3 and i want to use geotools 2.7.
the problem is i don't know how to remove some jars from the Repast Simphony. To add it, i just right click the project and have a option of Repast Simphony > Add Repast Simphony to this project
in the build path i can't edit that library. under the bulid path, after i press edit the only thing i can change is the name of the library. and in the .project file i found
<buildSpec>
.
.
.
<buildCommand> <name>repast.simphony.eclipse.repast_simphony_builder</name> <arguments> </arguments> </buildCommand>
</buildSpec>
<natures>
.
.
.
<nature>repast.simphony.eclipse.repast_simphony_nature</nature>
</natures>
and in the .classpath file it looks like this:
<classpathentry kind="con" path="REPAST_SIMPHONY_SUPPORT"/>
then i suspend all validators and remove the confilcted jars from the Repast library, however, it's not working. i can't build project due to lack of jars. so i am think about to edit some files to cross those conflict jars from the repast library, but i don't know how?
There is a “C:\Program Files\eclipse\plugins\repast.simphony.core_2.0.0\plugin_jpf.xml” file and “C:\Program Files\eclipse\plugins\repast.simphony.core_2.0.0\META-INF\ MANIFEST.MF” file. In above 2 files, all included files are list. I remove some of jars path but no difference.
If the Repath library is written in a clean way, you could simply use in your code full names.and.paths for all conflicting include operators. If the Repath does it, too, there will be no conflicts thereafter.

Missing Maven dependencies in Eclipse project

We have a project set up with maven for resolving dependancies. It usually works fine, but now I am trying to compile and run it on a new PC and I have problem with missing dependencies in Eclipse.
What is funny is that if I run "mvn package" in console or in eclipse, it works fine and even produces war containing all necessary jars. Only Eclipse complains with "The project was not built since its build path is incomplete. Cannot find the class file for org.slf4j.Logger...". If I compare the project with some other computer (where project works fine), I notice that there are quite a few libraries missing under "Maven dependencies" listing in Eclipse. Eventhough they are in the packaged war and they can be found also under repository folder.
So, the jar-s are there just Eclipse won't list them all under "Maven dependencies". What can I do?
Computer is running on Windows 7 with 64bit java & eclipse.
Well, I tried everything posted here, unfortunately nothings works in my case. So, trying different combinations I came out with this one that solved my problem.
1) Open the .classpath file at the root of your eclipse's project.
2) Insert the following entry to the file:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
Then, rebuild your project at eclipse (Project->Clean-Build).
You now can check at the Java Build Path of you project at the Libraries tab the Maven Dependencies included:
Problem solved!
I don't know what exactly solved it, but I did 4 things in Eclipse:
Window->Preferences: Maven->Installations: Global settings -> open file and hardcoded localRepository
Project->Clean
right click on project: Maven->Update dependencies
right click on project: Maven->Update project configuration
I guess it was the Update dependencies since right after first two there were no change.
I'm also new to Eclipse, and I've been having a similar problem where Eclipse just won't recognize an import statement, even though all signs point to the dependency having been successfully downloaded.
You should check that your dependency file has actually been downloaded by going to the command line and typing
mvn dependency:tree
If you see your package there, then but Eclipse doesn't acknowledge it, the thing that works for me (sometimes) is to go to the terminal, cd into the project folder, and type
mvn eclipse:clean
then
mvn eclipse:eclipse
Finally refresh project in eclipse
I don't know why this works, and sometimes it doesn't work once, then doing it again does work... so worth a try!
I had this issue for dependencies that were created in other projects. Downloaded thirdparty dependencies showed up fine in the build path, but not a library that I had created.
SOLUTION: In the project that is not building correctly,
Right-click on the project and choose Properties, and then Maven.
Uncheck the box labeled "Resolve dependencies from Workspace
projects"
Hit Apply, and then OK.
Right-click again on your project and do a Maven->Update Snapshots
(or Update Dependencies)
And your errors should go away when your project rebuilds (automatically if you have auto-build enabled).
My Project was just screwed up. Here is how I fixed it for Eclipse Indigo x64 (J2EE 3.7.3):
Deleted my POM file (backedup of course).
Project Context Menu > Maven > Disable Maven Nature.
Deleted the project (but not contents on disk).
Re-imported as Import > General > Existing Project.
Project Context Menu > Configure > Convert to Maven Project....
Accept defaults from Maven wizard.
Overwrite POM with your backedup POM. (Now you have Maven Dependencies folder).
Maven Update/Clean for good measure.
Hope that helps someone. :)
Well, I tried everything posted here, unfortunately nothings works in my case. So, trying different combinations I came out with this one that solved my problem.
1) Open the .classpath file at the root of your eclipse's project.
2) Insert the following entry to the file:
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
Then, rebuild your project at eclipse (Project->Clean-Build).
For me the problem was maven couldn't find the settings.xml file which is located in myMavenFolder\conf.
What I did to fix the issue was to select the right location of the settings.xml file from eclipse:
Window -> Preferences -> Maven -> User Settings
Finally, hit apply and update your project
Just in case anybody has tried all the other options and you are still stuck, try right-clicking on the project folder, head over to Maven option and click the "add dependency" button. For some reason Eclipse isn't updating the dependencies manually from the pom.xml at first try.
I had a similar problem. I solved it by running the Maven->Update Project Configuration action
So I'm about 4 or 5 years late to this party, but I had this issue after pulling from our repo, and none of the other solutions from this thread worked out in my case to get rid of these warnings/errors.
This worked for me:
From Eclipse go to to Window -> Preferences -> Maven (expand) -> Errors/Warnings. The last option reads "Plugin execution not covered by lifecycle configuration" - use the drop-down menu for this option and toggle "Ignore", then Apply, then OK. (At "Requires updating Maven Projects" prompt say OK).
Further Info:
This may not necessarily "fix" the underlying issue(s), and may not qualify as "best practice" by some, however it should remove/supress these warnings from appearing in Eclipse and let you move forward at least. Specifically - I was working with Eclipse Luna Service Release 1 (4.4.1) w/ Spring Dashboard & Spring IDE Core (3.6.3), and m2e (1.5) installed, running on Arch Linux and OpenJDK 1.7. I imported my project as an existing maven project and selected OK when warned about existing warnings/errors (to deal with them later).
(Sorry, I'm not a designer, but added picture for clarity.)
For the following steps worked in my case:
1 On eclipse, right click on the desired project Maven -> Disable Maven Nature
2 Right click again then go to Properties. Delete every evidence of external Maven dependency leaving only JRE System Library.
3 Right click one more time on the project then go to Configure -> Convert to Maven Project
None of the solutions above worked for me, so this answer is for anyone else in my situation. I eventually found the problem myself, and a different solution. The pom.xml file contained a dependencyManagement tag that wrapped the dependencies, and M2Eclipse would not add the Maven Dependencies folder when this was present. So, I removed this tag, then carried out the solution offered by Ualter Jr., and Eclipse immediately added the missing folder!
Here is the steps which i followed.
1. Deleted maven project from eclipse.
2. Deleted all the file(.setting/.classpath/target) other than src and pom from my source folder.
3. imported again as a maven project
4. build it again, you should be able to see maven dependencies.
This is how I solved it
Window->Preferences: Maven->User Settings (Click on "open file" in resulting window, or just edit settings.xml with an external text editor like Notepad)
Make sure localRepository (which is displayed in this window) is correct. I had a typo in my file.
Once you have corrected settings.xml, click on Update Settings, which is on this same Preferences->Maven->User Settings screen.
Now rebuild, and it will install the latest JAR's in the correct location.
My answer is similar to that of #JerylCook: find another .classpath file in a working Maven project, edit your bad ones as that good working ones. The key is to add
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
in every <classpathentry> of type con and src. Don't forget to change <classpathentry .... /> to <classpathentry ...>xxx</classpathentry>.
At last, update the maven project and reinstall/rebuild in maven.
I got this error when had an error in Pom.
Run mvn eclipse:eclipse command on console to check that pom is parsable or not.
If not parsable search for the error.
If you have "nested paths" errors after performing Maven -> Update Project Configuration (or in Juno it's "Update Configuration...") then your build path is misconfigured.
Right-click project -> Build Path -> Configure Build Path
Ensure that only '/src' and directories at that level are included. If you have e.g. '/src' and also '/src/main/resources' present, this is incorrect. The second resource ('/src/main/resources') is "nested" under the first ('/src') which is causing your inability to import resources, since it prevents eclipse from seeing maven dependencies.
My issue sounds similar so I'll add to the discussion. I had cancelled the import of an existing maven project into Eclipse which resulted in it not being allowed to Update and wouldn't properly finish the Work Space building.
What I had to do to resolve it was select Run As... -> Maven build... and under Goals I entered dependency:go-offline and ran that.
Then I right clicked the project and selected Maven -> Update Project... and updated that specific project.
This finally allowed it to create the source folders and finish the import.
I could solve the error by
1) Right click (your maven project) -> maven -> maven install
After successful installation
2) Right click (your maven project) -> maven -> update project. And the whole error of maven got solved!
For me it was sufficient add a buildCommand (org.eclipse.m2e.core.maven2Builder) and a nature (org.eclipse.m2e.core.maven2Nature) in the .project file, like this:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>iText</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
and I had
I had a similar issue and have tried all the answers in this post. The closest I had come to resolving this issue was by combining the Joseph Lust and Paul Crease solutions. I added the backed up pom.xml file after deleting and reimporting the project, and nothing showed up until I deleted the dependency management tag in the pom.xml and magically the dependencies folder was there.
However, it broke up the child POM's since they need the parent pom.xml dependency management to function, and as a result my MVN was not functioning properly on the project either from Eclipse or the command line, giving a broken pom.xml error.
The last solution if all fails, is to manually import the .jar files needed by your project. Right click the project Properties -> Java Build Path -> Libraries and Add external Jar.
If your MVN is working correctly from the command line and you have done a successful build on the project, you will have all the repos needed in your .m2/repository folder. Add all the external jars mentioned in your dependencies tag of pom.xml and you will see a referenced library section in your Eclipse, with all the pesky red errors gone.
This is not the optimal solution, but it will let you work in Eclipse without any errors of missing dependencies, and also allow you to build the Maven project both from Eclipse and command line.
This same problem happened to me, and it was because there an error in downloading a jar due to repo issues, indicated by a red flag in the pom.xml.
I added another repository so the red flag in the pom.xml disappeared and Eclipse then loaded the pom again, resolved its issue and listed the maven dependencies in Project Explorer. it sounds simple and obvious to resolve visible issues, but since Eclipse was quite happy to run maven, and build successfully, it was not obvious that the red flag and repo issue were at the root of its unwillingness to parse the pom and list the maven dependencies
mvn eclipse:clean
then from eclipse: "Maven Update Project" does the trick!
update the .classpath to below will work every time.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Maven Dependencies: What solved it for me in Eclipse?
I added the dependency in the "pom" file. I did a build, but could not see the Maven Dependency in the Eclipse.
Next Step: Closed the project.
Then Reopened the project.
I could see the Maven dependencies.
I experienced a similar problem lately after i created a maven project, the maven dependencies folder did not appear in the project structure.To solve this simply add any dependency in the pom file, such as in code below, or right-click on the project and go to maven and select add dependency, search for any dependency such as junit add this, and the maven dependency should appear on your project structure now.
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.9.RELEASE</version>
<scope>runtime</scope>
</dependency>
</dependencies>
Just right click over Project folder and under maven > Update project > Select your project > OK.
it will automatically download all dependencies under pom.xml to folder named Maven Dependencies.
Open the .classpath file at the root of your eclipse's project.
It's so amazing that this one problem has so many different causes and possible solutions. I found yet a different solution that worked for me.
Well, it's not so much a solution but a discovery: I can see the Maven Dependencies node in the Package Explorer, which is the default for the Java perspective, but I can not see it in the Java EE perspective, which uses the Project Explorer by default. Both of those explorers look very similar at quick glance, so you may expect to see the Maven Dependencies in both.
As I was trying to figure this out, I hadn't realized that difference, so it wasn't really a problem for me in the end after all.
the whole project looked weird in eclipse, maven dependencies folder were missing, it showed some types as unknown, but I was able to build it successfully in maven. What fixed my issue was adding gen folder to source path on project build path.
Probably this is similar to this Android /FBReaderJ/gen already exists but is not a source folder. Convert to a source folder or rename it

Syncing web project dependencies maven -> eclipse

I've got m2eclipse plugin installed and there's no problem syncing compile time dependencies that appear in pom.xml.
Now, I add JPA + Hibernate(or whatever) dependency that maven catches up just fine when doing mvn jetty:run.
The problem is, Eclipse doesn't. So I don't get those extra .jars deployed on the referenced tomcat when I launch the web app from eclipse.
Is there a way to add this kind of web runtime dependencies to Eclipse? Don't really like the idea of manually editing org.eclipse.wst.common.component.
I have found that any time you update a project's POM it helps to rerun m2eclipse or it will not see the new external dependencies.
If you have not tried to run this since you added your new dependencies ( JPA + Hibernate or whatever ) to your POM then give it a shot and see if it works.
mvn clean install eclipse:clean eclipse:eclipse eclipse:m2eclipse
Please note that after you execute this, you will probably need to refresh your Eclipse projects for the changes to take effect.
It might not require all of these arguments to work, but I sort of added them all at one point just to make certain. You can tweak the list of arguments to get it to the point that it works for you.
Doing this may blow away some of your Eclipse preferences for your project, so hopefully you have everything needed to rebuild your project already in your POM. For instance, I have a bunch of extra things in one of my POMs to ensure that things like springnature and springbuilder are added to my eclipse project when maven is used to rebuild the eclipse project.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<additionalProjectnatures>
<projectnature>
org.springframework.ide.eclipse.core.springnature
</projectnature>
<projectnature>
org.eclipse.wst.common.project.facet.core.nature
</projectnature>
<projectnature>
org.eclipse.wst.common.modulecore.ModuleCoreNature
</projectnature>
<projectnature>
org.eclipse.jem.workbench.JavaEMFNature
</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>
org.eclipse.wst.common.project.facet.core.builder
</buildcommand>
<buildcommand>
org.eclipse.wst.validation.validationbuilder
</buildcommand>
<buildcommand>
org.springframework.ide.eclipse.core.springbuilder
</buildcommand>
</additionalBuildcommands>
<wtpversion>1.5</wtpversion>
</configuration>
</plugin>
</plugins>
</build>
This last bit was added as a warning! Would hate for someone to take a working Eclipse project and destroy a bunch of the configuration if they were not already prepared for the consequences of running the eclipse:* commands.
I have found other solution. In my case there is WAR which depends on some JARs. Some JARs come from dependant projects (and they are deployed), and some are just plain dependencies (hibernate, spring, etc.).
I've spent few hours trying to determine why JARs from dependant projects are deployed and other - don't.
My solution was to create WEB-INF/lib folder in my WAR project! Usually you don't need them, because Maven2 creates this lib during package phase. In eclipse this is necessary.
My Eclipse is 3.6M4 and m2eclipse is 0.9.9.200912160759.