mdarwin
mdarwin

Reputation: 2384

maven with eclipse error "Path must include project and resource name"

I've recently started using maven with eclipse.

I've set up several projects and I've noticed that if I try and specify a build directory (to over-ride target) which is outside the project directory, I get an error when doing "update project":

'Updating Maven Project' has encountered a problem.

An internal error occurred during: "Updating MAven Project". Path must include project and resource name: /[my project name]

I need to build outside the project. How can I get around this? Can I perhaps have maven automatically create a softlink?

Upvotes: 10

Views: 35492

Answers (6)

DAB
DAB

Reputation: 1873

I was convinced that this problem was caused by either Maven or Eclipse, perhaps because I found this and other references to that combination on Stackoverflow.

After considerable investigation, and going slightly mad, it turns out that Git was involved - though I don't know if it was the cause.

My Maven project consists of several "nested" POMs, and I don't open the parent POM in Eclipse, but only the children. I had a couple of files (batch scripts) at the top level which I hadn't committed to Git, but once I committed these the

Path must include project and resource name

problem disappeared completely.

Eclipse version: 2020-12 (4.18.0)

Upvotes: 0

twm
twm

Reputation: 1458

To answer the last paragraph in your question, you can get around the problem with a softlink. I did it a little differently than what you guessed at. It's not Maven that creates the symlink because this is a problem with Eclipse JDT (as others have pointed out) which runs without invoking Maven at times (it seems). Here's what I did, with all paths relative to my Maven project directory:

1) I wanted my actual build directory to be "../../local/java/scratch/target"

2) I created a softlink: ln -s ../../local ./

3) I added this entry to my "pom.xml":

<build>
  <directory>${project.basedir}/local/java/scratch/target</directory>
</build>

Now Eclipse JDT happily thinks it's building within the project directory but in reality the path "../../" takes it outside of the project directory. My guess is that an absolute path would have worked too.

Upvotes: 2

G. Demecki
G. Demecki

Reputation: 10586

This is a bit old thread, but since nobody gave a correct answer...

The following Eclipse error:

An internal error occurred during: "Updating Maven Project".
java.lang.IllegalArgumentException: Path must include project and resource name:
    at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)
    at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:2069)
    at ...

can occur in many different scenarios - in the Eclipse Bugzilla you can find a lot of similar bug reports.

In situation you described, it is a known limitation. But it's not a m2e fault - simply Eclipse JDT does not allow setting output dir outside of the project.
IMHO it's a pity, because if maven supports a such layout, so I would expect that m2e should as well.

I've reported it as a bug 493229. But it has been closed with status WONTFIX.

Upvotes: 2

paxmemento
paxmemento

Reputation: 291

Although this is a fairly old thread, I recently encountered this problem and was able to solve it. The reason why maven threw this error is I had, somewhere in my pom.xml file, an absolute path that was not consistent with the directory from which the project was imported into eclipse. So I had two absolute paths (one incorrect, or points to a previous location) that point to resources, i.e. project.build.outputDirectory, in the pom.xml file.

The Solution: Locate the faulty absolute path, /home/userA/ProjectB/bin, and replace with a relative, ./bin, path. Update the project in eclipse and you should be fine.

Upvotes: 6

SparkOn
SparkOn

Reputation: 8946

why can't I build somewhere like ../build

Yes you can build in some folder called build provided it contains the pom.xml.

The pom.xml file is the core of a project's configuration in Maven. It is a single configuration file that contains the majority of information required to build a project.

In short the pom.xml will have all information to build your project. pom.xml is a file which contains the project configuration details used by Maven. It provides all the configuration required for a project.

Upvotes: 0

user3487063
user3487063

Reputation: 3682

For example, if you'd like to have build contents in some folder outside workspace, you can have something like :

<build>
<plugins>
  <plugin>
    <executions>
        <execution>

        <phase>move-build</phase>
        ////do your build
  </plugin>

  <plugin>
    <executions>
        <execution>
        <id>copy-resources</id>
        <phase>move-build</phase>
        // do your copying to external
  </plugin>

  <plugin>
    <executions>
            <execution>

        <phase>move-build</phase>
        // do your deletions from target
  </plugin>

</plugins>
</build>

then you can call mvn move-build to have your build, copy, delete done.

here is an example of copy to external folder and delete, you can combine both into your move-build phase as described above

Upvotes: 0

Related Questions