agusgambina
agusgambina

Reputation: 6669

Maven - No plugin found for prefix 'tomcat7' in the current project and in the plugin groups

I've created a Maven project. This is the structure:

-parent
    -core
    -web

but when I try to deploy with the command mvn tomcat7:deploy, I get the following error:

No plugin found for prefix 'tomcat7' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo]

I put this configuration in the pom.xml (of the web project):

<build>
    <finalName>MavenWeb</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>
        </plugin>
    </plugins>
</build>

Upvotes: 30

Views: 68386

Answers (6)

H.Mims
H.Mims

Reputation: 11

After I checked my pom.xml file, I made sure all my dependencies were selected in the build order under the JAVA Build Path JAVA BUILD PATH

Upvotes: 1

tom
tom

Reputation: 2300

I got the same error from using the file based idp.xml and formatting it!!! Don't format it, use curl, or chrome and save the file from https://idp.ssocircle.com/idp-meta.xml directly to spring-security-saml-1.0.2.RELEASE\sample\src\main\resources\metadata\idm.xml

Then in SecurityContext.cml

 <bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
    <constructor-arg>
        <list>
            <!-- Example of classpath metadata with Extended Metadata -->
            <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
                <constructor-arg>
                    <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
                        <constructor-arg>
                            <bean class="java.util.Timer"/>
                        </constructor-arg>
                        <constructor-arg>
                            <bean class="org.opensaml.util.resource.ClasspathResource">
                                <constructor-arg value="/metadata/idp.xml"/>
                            </bean>
                        </constructor-arg>
                        <property name="parserPool" ref="parserPool"/>
                    </bean>
                </constructor-arg>
                <constructor-arg>
                    <bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
                    </bean>
                </constructor-arg>
            </bean>

</bean>

Upvotes: 0

sapy
sapy

Reputation: 9592

It means tomcat7 plugin not found . Add this to your pom.xml.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.3-SNAPSHOT</version>
        </plugin>
    </plugins>
</build>

Upvotes: 4

Sergio Perez
Sergio Perez

Reputation: 641

The error happens to have the plugin inside <reporting>, it should be located in <build>

Before:

<reporting>
<plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
    <port>8080</port>
    <path>/</path>
    </configuration>
    </plugin>
</plugins>
</reporting>

After:

<build>
<plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
    <port>8080</port>
    <path>/</path>
    </configuration>
    </plugin>
</plugins>
</build>

Upvotes: 1

Amir
Amir

Reputation: 1061

The reason why you get that error is because you simply have not installed the Tomcat7 plugin. Here's what you can do (I tested this on my test project and it works):

  1. Add tomcat7 plugin dependency in your pom.xml file just like you have done.
  2. Run either mvn installor mvn package to install that tomcat7 plugin
  3. Now you should be able to run mvn tomcat7:deploy

I tested this solution with mvn tomcat7:run and it works like a charm :)

Upvotes: 5

Tome
Tome

Reputation: 3364

Plugins goals can be called using their 'FQN': groupId:artifactId:version:goal or, if applicable, shorter commands (many variants available). Using only the short name of a plugin (in your tomcat7:deploy, tomcat7 is the short name, deploy being the goal/mojo) is applicable if:

1) the groupId of the plugin is contained in the known plugin groups of Maven. org.apache.maven.plugins being in the list by default.

OR

the pom.xml of the project you're invoking the Maven command on declares the plugin

2) the artifactId is [short-name]-maven-plugin or maven-[short-name]-plugin (maven-[short-name]-plugin being 'reserved' for plugins provided by Maven project.

That explains why mvn compiler:compile can work out of the box on any project, but not tomcat7:deploy

In your case, the second condition is true, so you just have to declare the plugin on the project you're launching the command on, or add this to your user settings.xml file:

<pluginGroups>
  <pluginGroup>org.apache.tomcat.maven</pluginGroup>
</pluginGroups>

See here for more info

Upvotes: 22

Related Questions