NetBeans 无法在 Maven Web 应用程序上运行 package.json

Posted

技术标签:

【中文标题】NetBeans 无法在 Maven Web 应用程序上运行 package.json【英文标题】:NetBeans can't run package.json on a Maven web application 【发布时间】:2017-05-21 16:19:19 【问题描述】:

使用 NetBeans 8.2,我创建了一个新的 Maven Web 应用程序。我在Web Pages 文件夹中放置了一个工作的package.json 文件,所以它的路径是:

C:\Users\xxx\Documents\NetBeansProjects\MyApp\src\main\webapp\package.json

我左键单击package.json文件并单击npm install选项。然后我受到这些错误/警告的欢迎:

"C:\Program Files\nodejs\npm.cmd" "install"
npm WARN ENOENT ENOENT: no such file or directory, open 'C:\Users\Nick\Documents\NetBeansProjects\MyApp\package.json'
npm WARN EPACKAGEJSON C:\Users\xxx\Documents\NetBeansProjects\MyApp No description
npm WARN EPACKAGEJSON C:\Users\xxx\Documents\NetBeansProjects\MyApp No repository field.
npm WARN EPACKAGEJSON C:\Users\xxx\Documents\NetBeansProjects\MyApp No README data
npm WARN EPACKAGEJSON C:\Users\xxx\Documents\NetBeansProjects\MyApp No license field.
Done.

我注意到 NetBeans 试图在错误的位置查找 package.json 文件:

C:\Users\Nick\Documents\NetBeansProjects\MyApp\package.json'

而且我似乎不知道如何告诉 IDE 在哪里寻找它。

当我转到 Project Propertiesjavascript Librariesnpm 时,我得到一个空视图:

package.json 未找到

如何设置 NetBeans 以查看“package.json”并运行它?当我尝试在 html5 项目中使用它时,它运行良好,但我需要对 Java Web 应用程序项目提供 npm 支持。

【问题讨论】:

我支持这个问题。似乎 Netbeans 希望用户将 HTML5 项目与 Java 项目分开? 如果我将(创建)package.json 放在项目根文件夹中,它似乎可以工作:下载库和依赖项等;但是我不知道如何从项目的 html、jsps 和视图中引用这些 js 文件 【参考方案1】:

我最终找到了内置 IDE 机制之外的解决方案。我使用 frontend-maven-plugin 为我的项目设置了本地 npm 存储库。

我没有使用 IDE 提供的 npm install 选项,而是使用 Maven 定义一个目标,并使用 nbactions.xml 运行它。

    要安装插件,请编辑您的 pom.xml 文件 (sn-p from here),添加插件描述符和将下载并在您的存储库中安装 npm 的执行:

     <plugins>
         <plugin>
             <groupId>com.github.eirslett</groupId>
             <artifactId>frontend-maven-plugin</artifactId>
             <version>1.8.0</version>
             <executions>
                 <!-- Installs node + npm in your repo -->
                 <execution>
                     <id>install node and npm</id>
                     <goals>
                         <goal>install-node-and-npm</goal>
                     </goals>
                     <phase>generate-resources</phase>
                 </execution>
                 ...
    

    我已将此代码附加到上面的代码中。这是一个运行 npm install (sn-p found here) 的执行:

         ....
         <execution>
             <id>npm install</id>
             <goals>
                 <goal>npm</goal>
             </goals>
    
             <!-- optional: default phase is "generate-resources" -->
             <phase>generate-resources</phase>
    
             <configuration>
                 <!-- optional: The default argument is actually
                 "install", so unless you need to run some other npm command,
                 you can remove this whole <configuration> section.
                 -->
                 <arguments>install</arguments>
             </configuration>
         </execution>
     </plugin>
    

    创建一个package.json 文件(在您的POM 所在的同一目录中)并开始将内容放入其中(example)

    我在nbactions.xml 中添加了对npm install 目标的引用。我给它起了一个显示名称npm-install

     </actions>
         ...
         <action>
             <actionName>CUSTOM-npm-install</actionName>
             <displayName>npm-install</displayName>
             <goals>
                 <goal>npm</goal>
             </goals>
         </action>
     </actions>
    

    然后,右键单击项目(从项目视图)-> 运行 Maven -> npm-install

然后该插件将运行并在不会与您的项目捆绑的单独目录中安装 package.json 和 Node.js 运行时,您可以在那里对其进行编辑并重新运行目标。

【讨论】:

以上是关于NetBeans 无法在 Maven Web 应用程序上运行 package.json的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Netbeans 无法识别我的 Grails 应用程序中的 Maven 依赖项导入?

在 NetBeans 中编译 Maven 项目时 Ant 无法找到环境变量

使用 maven 编译 netbeans Web 服务项目时出错

无法将 JProfiler 与 Netbeans 中的 Java 项目集成

如何在 Netbeans 11 中使用 Maven 和 Inno Setup 为 JavaFX 应用程序创建可执行安装程序

使用 netbeans 和 maven 创建 JApplet