前端Maven插件无法执行"bower install"命令

8

我有一个包含“web”模块的项目。在该模块中,我有一个名为“pom.xml”的文件,在其中使用了frontend-maven-plugin插件:

<build>
        <plugins>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>0.0.26</version>
                <executions>
                    <execution>
                        <id>bower install</id>
                        <goals>
                            <goal>bower</goal>
                        </goals>
                        <phase>generate-sources</phase>
                        <configuration>
                            <arguments>install</arguments>
                            <installDirectory></installDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在 Web 模块中还有一个 .bowerrc 文件:
{
    "directory":"src/main/resources/static/bower_components"
}

还有bower.json文件:

{
  "name": "web",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "jquery": "~2.1.4",
    "bootstrap": "~3.3.5"
  }
}

还有 package.json 文件:

{
    "name": "web",
    "devDependencies": {
        "bower": "~1.6.5"
    },
    "engines": {
        "node": ">=0.10.40"
    }
}

当我尝试执行"mvn clean install"命令时,出现了错误:
    [INFO] Running 'bower install' in /home/aleksandar/projects/cs230/web
    [ERROR] module.js:338
    [ERROR]     throw err;
    [ERROR]           ^
    [ERROR] Error: Cannot find module '/home/aleksandar/projects/cs230/web/node_modules/bower/bin/bower'
    [ERROR]     at Function.Module._resolveFilename (module.js:336:15)
    [ERROR]     at Function.Module._load (module.js:278:25)
    [ERROR]     at Function.Module.runMain (module.js:501:10)
    [ERROR]     at startup (node.js:129:16)
    [ERROR]     at node.js:814:3
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO] 
    [INFO] parent ............................................. SUCCESS [  0.349 s]
    [INFO] database ........................................... SUCCESS [  0.787 s]
    [INFO] test ............................................... SUCCESS [  0.812 s]
    [INFO] domain ............................................. SUCCESS [  2.103 s]
    [INFO] core-api ........................................... SUCCESS [  0.185 s]
    [INFO] jpa-repository ..................................... SUCCESS [  0.174 s]
    [INFO] core-impl .......................................... SUCCESS [  0.495 s]
    [INFO] web ................................................ FAILURE [  0.392 s]
    [INFO] file-repository .................................... SKIPPED
    [INFO] email .............................................. SKIPPED
    [INFO] app ................................................ SKIPPED
    [INFO] payment ............................................ SKIPPED
    [INFO] jobs ............................................... SKIPPED
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 5.984 s
    [INFO] Finished at: 2015-11-25T10:16:51+01:00
    [INFO] Final Memory: 39M/349M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:0.0.26:bower (bower install) on project web: Failed to run task: 'bower install' failed. (error code 1) -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.eirslett:frontend-maven-plugin:0.0.26:bower (bower install) on project web: Failed to run task    org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    Caused by: org.apache.maven.plugin.MojoFailureException: Failed to run task

com.github.eirslett.maven.plugins.frontend.mojo.AbstractFrontendMojo.execute(AbstractFrontendMojo.java:67)
        ... 22 more
    [ERROR] 
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    [ERROR] 
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR]   mvn <goals> -rf :web

请帮忙解决这个问题,我已经花费了很多时间尝试解决它。


1
也许需要先安装Node.js。 - Mr_Thorynque
3个回答

3
  1. Set your M3_HOME path to use "mvn clean install" without sudo
  2. Set 777 priveledges for "target" folders in project and other locked folders in web module
  3. In pom.xml file in web module add this:

                <execution>
                    <id>install node and npm</id>
                    <goals>
                        <goal>install-node-and-npm</goal>
                    </goals>
                    <configuration>
                        <nodeVersion>v0.12.2</nodeVersion>
                        <npmVersion>2.7.6</npmVersion>
                    </configuration>
                </execution>
    
                <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <!-- Optional configuration which provides for running any npm command -->
                    <configuration>
                        <arguments>install</arguments>
                    </configuration>
                </execution>
    
                <execution>
                    <id>bower install</id>
                    <goals>
                        <goal>bower</goal>
                    </goals>
                    <configuration>
                        <arguments>install</arguments>
                    </configuration>
                </execution>
    

1
出现相同类型的错误,我不想每次都安装Node,因为它已经全局存在了,如何从插件中排除Node? - Mohankumar Rathinam

1
使用技巧:
        <execution>
            <id>npm install</id>
            <goals>
                <goal>npm</goal>
            </goals>
            <configuration>
                <arguments>install bower</arguments>
            </configuration>
        </execution>

0

看起来你的系统中没有安装Bower。使用npm在计算机上全局安装Bower:

npm install -g bower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接