<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
    <head>  
        <title>NetBeans IDE - Build Tools</title>
        <meta http-equiv="content-language" content="en">
        <meta name="description" content="DESCRIPTION HERE">
        <link rel="stylesheet" type="text/css" href="../../features.css">
        <link rel="stylesheet" type="text/css" href="/images_www/js/colorbox/colorbox.css">
    </head>
    <body>
        <script type="text/javascript" src="/images_www/js/colorbox/jquery.colorbox-min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {
                $('a.cbox').colorbox({rel: 'cbox', opacity: 0.7});
            });
        </script>
        <div style="margin:10px 20px 0px 0px;">
            <h1>Build Tools</h1>
            <p class="intro">
                <a href="../../images_www/v7/3/features/ide-buildtools-maven-full.png"><img
                        src="../../images_www/v7/3/features/ide-buildtools-maven-cut.png"
                        alt="Maven in the NetBeans IDE"
                        style="border: 1px solid;"> <span
                        class="font-11"><br>
                        Click image for fullscreen preview</span></a>
            </p>
            <p class="intro">
                Take control of your build right where your code is—with standard build tools integrated into the IDE.
            </p>
            <div class="line">&nbsp;</div>

            <!-- left text section start -->
            <a name="o1"></a>
            <span id="im1" class="overview-right"><a href="../../images_www/v7/3/features/ide-collaboration-hudson-full.png" class="cbox" title="Hudson"><img src="../../images_www/v7/3/features/ide-collaboration-hudson-cut.png" alt="Hudson"  /></a></span>
            <h2>Hudson</h2>
            <p>NetBeans IDE lets you create and manage Hudson continuous servers
                and related Hudson jobs. You can
            register Hudson instances, create new Hudson jobs, run Hudson jobs,
            and view results provided by the server.</p>
            <p>Browse your hosted Hudson jobs, builds, workspaces, and artifacts, and 
                inspect the build console in the Output window. When a 
                build fails, you are notified immediately in the IDE's status bar.</p>
            <p>To find out why a job failed, right-click a build node and inspect 
                stack traces for all failed tests. You can also view the changelog 
                and browse file diffs in a user-friendly way, right inside the IDE.</p> 
            <p><a href="http://wiki.netbeans.org/HudsonInNetBeans" class="arr-link">
                    Hudson in NetBeans IDE</a></p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <!-- right text section start -->
            <a name="o2"></a>
            <span class="overview-left" id="im2"><a href="../../images_www/v7/3/features/ide-buildtools-maven-full.png" class="cbox" title="Maven"><img src="../../images_www/v7/3/features/ide-buildtools-maven-cut2.png" width="320" alt="Maven" /></a></span>
            <h2>Maven</h2>
            <p>NetBeans IDE supports the Maven build system to help you manage project 
                dependencies, builds, reports, and documentation. Open, build, run, debug, profile,
                and deploy your existing Maven projects, which can be opened directly
                into the IDE, without an import procedure. 
                Wizards are provided for creating new applications based
                on existing Maven Archetypes.</p>
            <p>When you are running, testing, or debugging your applications, the IDE executes Maven goals
                from your pom.xml file. The XML editor includes dedicated features for Maven,
                such as code completion, code templates, 
                and code generators.</p> 
            <p>The IDE's Maven Repository browser lets you browse the content of your local repository and
                any registered remote repositories. Add your own repositories, 
                search for artifacts, and add artifacts as dependencies to projects.
                You can view library dependencies, runtime dependencies, and test library dependencies.
                Views distinguish between dependency types and mark the local availability of 
                javadoc and sources. Graphs show direct and transitive dependencies and 
                identify version conflicts. Tools are provided
                for including and excluding dependencies. 
            </p>
            <p><a href="http://wiki.netbeans.org/MavenBestPractices" class="arr-link">
                    Maven in NetBeans IDE</a></p>
            <div class="line">&nbsp;</div>
            <!-- right text section end -->

            <!-- left text section start -->
            <a name="o3"></a>
            <span class="overview-right" id="im3"><a href="../../images_www/v7/3/features/ide-buildtools-ant-full.png" class="cbox" title="Ant"><img src="../../images_www/v7/3/features/ide-buildtools-ant-cut.png" width="320" alt="Ant" /></a></span>
            <h2>Ant</h2>
            <p>The default NetBeans IDE project system is built directly on top of the Ant build system. All
                of the project commands, such as "Build Project" and "Run File in Debugger", 
                call targets in the project's Ant script. You can therefore build and 
                run your project outside the IDE exactly as it is built and run inside the IDE.</p>
            <p>You do not need to be familiar with Ant to work with applications in the IDE. You can set
                all the basic compilation and runtime options in your project's Project
                Properties dialog box and the IDE automatically updates the project's 
                Ant script. If you know how to work with Ant, you can customize a project's 
                Ant script directly or write your own Ant script for your project.
            </p>
            <div class="line">&nbsp;</div>
            <!-- left text section end -->

            <h2>See Also</h2>
            <ul class="bigger">
                <li><a href="/community/releases/73/index.html">NetBeans IDE 7.3  Release Page</a> for a list of specific features in the latest stable release.</li>
                <li>Get more details about features of the latest stable release on the <a href="http://wiki.netbeans.org/NewAndNoteworthyNB73">NetBeans IDE 7.3 New and Noteworthy page</a>.</li>

            </ul>

        </div>
    </body>
</html>
