将Netbeans项目转换为启用Maven的项目


77

如何将Netbeans生成的项目转换为接受Maven配置?有创建基于Maven的项目的选项,但是没有什么(到目前为止,我发现)可以将Maven依赖项添加到现有项目中。


您是否已将项目作为Maven项目打开?
khmarbaise

Netbeans不允许您将其作为“ Maven类型”项目打开。[好吧,它没有给您“打开方式”的选项]
monksy 2011年

Answers:


69

您需要创建一个单独的Maven项目。然后,您可以将代码从其他项目复制到Maven项目。这可以从NetBeans的“项目”窗口中完成。

只需在树中选择代码文件/包,右键单击以进行复制,然后将其粘贴到新Maven项目的“源包”中。

接下来,打开Maven因为缺少依赖项而无法编译的文件。问题行左侧的黄色灯泡将为您提供搜索缺失的依赖项并将其添加到项目中的选项。您需要在线才能执行搜索。

您还可以通过在“项目”窗口中右键单击依赖项文件夹,在新的Maven项目中手动添加Maven依赖项。


1
那就是我所做的。并没有我想的那么糟。我喜欢新的基于Maven的版本。
2013年

4
只需注意:如果您已休眠,则需要将hibernate.cfg.xml和persistence.xml文件复制到新文件夹:src / main / resources / META-INF
ACV 2015年

3
如果它连接到git会怎么样,建议分支并跟踪合并的文件,而不是创建新的master如何处理它
shareef 2016年

创建动态Web项目然后将其转换为Maven之后,它是否不能像Eclipse?我发现Netbeans最近缺少此有用的功能。
Stu_Dent

15

如果您熟悉Maven,那么即使以后也可以配置Maven,但是不建议这样做。

人们(包括我在内;)背后的唯一原因是建议创建一个新的maven项目,因为Maven拥有自己的目录结构。这是标准的。现在,如果要在以后的阶段为项目启用Maven,则可以在pom.xml中进行配置,即源目录,目标目录和Web应用程序目录(如果适用)

我在SVN中有一个大型项目,被禁止创建一个新项目。我不想支持库管理,因此我根据目录结构配置了maven。

这是我的pom.xml的一部分

    <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>testpackages</testSourceDirectory>
    <testOutputDirectory>target/test-classes</testOutputDirectory>
    <plugins>
        <plugin>
            <version>2.3.2</version>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <webResources>
                    <resource>
                        <!-- this is relative to the pom.xml directory -->
                        <directory>web-root</directory>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

您能再解释一下吗?
托马什Zato -恢复莫妮卡

1
如果您的目录结构与标准maven项目不同,则必须对其进行配置。Maven隐式使用了几个插件,它们将使用标准目录结构。因此,当您使用不同的结构时,必须配置这些插件并控制构建过程。例如,我的Web资源直接位于web-root文件夹中,那么我必须相应地配置maven war插件。
2015年

它报告sourceDirectory为无效:(
托马什Zato -恢复莫妮卡

9

我对桌面Java应用程序执行以下步骤(在执行此操作之前备份您的项目):

  1. 在Eclipse中打开您的项目(转到新项目并浏览到您的项目)。导入项目将无法进行。

  2. 为此项目启用Maven

  3. 添加依赖库

  4. 关闭你的专案

  5. 删除NBProject文件夹,然后Build.xml从项目位置删除(否则NetBeans将无法将其识别为maven项目)。

  6. 在NetBeans中打开此项目


2
OP明确表示,他希望有关netbeans IDE的信息不被
忽略-Narrim

15
他只是暂时使用eclispe在项目中启用Maven。
2015年

2
即使您使用Git项目跟踪远程存储库,它也能很好地工作,一旦完成,您只需要提交并推送即可。非常有帮助,谢谢。
Shondeslitch

0

改进@JVerstry答案..我在这里分步添加了另一个无法解释的解决方案。

在Netbeans中创建一个新的Maven项目。然后将您的源代码复制粘贴到您的maven文件夹中,可以在Netbeans IDE Projects View Itself中完成。 之后,请按照下列步骤操作。

  1. 添加SPRING MVC依赖关系。
  2. 将Spring MVC版本添加到属性部分(取决于第1点)
  3. 在您的Spring文件夹中配置dispatcher-servlet.xml和web.xml。
  4. 剩下的就是要做一些匹配并配置您的主Controller&JSP / HTML-Page。
  5. 通过运行检查您的主页。

第一点

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-web</artifactId>
   <version>${spring.version}</version>
</dependency>

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>${spring.version}</version>
</dependency>

第2点:并将spring.version添加到属性部分

<properties>
    <spring.version>4.0.2.RELEASE</spring.version>
</properties>

第3点:在WEB-INF文件夹下,创建一个名为dispatcher-servlet.xml的文件。打开文件并复制以下代码。

<?xml version="1.0" encoding="UTF-8"?>
   <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<mvc:annotation-driven />
<context:component-scan base-package="com.youbequityweb.controllers" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>
</beans>

声明支持注释驱动的mvc,例如使用@ Controller,@ Service,@ Component。

表示从该基本程序包中扫描类以确定所有bean类。

视图解析器指定我们的视图(jsp)和扩展名的位置。在您的web.xml中,在web-app部分中添加spring配置。

<!--Spring Config-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>
<listener>    <listenerclass>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-  class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

第4点:这很棘手,现在将您现有的主控制器链接到dispatcher-servlet.xml中定义的基本包。例如:HomeController.java如下所示。

package com.youbequityweb.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {

@RequestMapping(value="/home", method = RequestMethod.GET)
    public String viewHome(){
    return "home";
    }
}

第5点:在NetBeans中,现在右键单击,选择“清理并构建”,如果出现任何警告和冲突,请离开,然后运行spring mvc应用程序以获得结果。


0

我偶然发现了Netbeans 8.2的原因。以Netbeans项目而不是Maven项目的形式打开项目;删除netbeans和ant特定文件后,然后将它们替换为正确格式的pom。

Netbeans似乎为已经打开的项目缓存了项目类型,这可以通过删除所说的缓存来解决。

Windows位于:

C:\Users\${username}\AppData\Local\NetBeans\Cache

Linux在这里:

~/.cache/netbeans/${netbeans_version}/index/

Mac在这里:

~/Library/Caches/NetBeans/${netbeans_version}/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.