<?xml version="1.0"?>

<document url="./ssl.xml">

<properties>


<title>How to setup a basic Struts project using Netbeans IDE - Apache Struts</title>

</properties>

<body>

<section href="netbeans" name="How to setup a basic Struts project using Netbeans IDE"/>
<section name="Legal Disclamer">

Please read <a href="http://jakarta.apache.org/site/idedevelopers.html">this</a> first.<br/>
<p>
* DISCLAIMER - This simple How-To shows you one of many ways to setup a working project using<br/>
the Struts framework.  This is mainly geared toward struts users who are new to Netbeans, and<br/> 
don't want to spend a lot of time figuring out the differences between their old IDE (if any)<br/>
and this one.<br/>
<br/>
I will also apologize ahead of time for the formatting of this page.<br/>
</p>
<br/>
In this How-To, I will demonstrate (using Netbeans 3.4) how to setup, compile, and build
a customized version of the struts-example.<br/> 
</section>


<section name="Let's get started">
<ol>
 <li>
  Create a new project.<br/>
  <img alt="" src="../images/how-to/netbeans/creating-project3.jpg"></img><br/><br/><br/>
  <img alt="" src="../images/how-to/netbeans/creating-project4.jpg"></img><br/><br/><br/>
  <img alt="" src="../images/how-to/netbeans/creating-project5.jpg"></img><br/><br/><br/>
  <img alt="" src="../images/how-to/netbeans/creating-project6.jpg"></img><br/><br/><br/>
  <img alt="" src="../images/how-to/netbeans/creating-project8.jpg"></img><br/><br/><br/>
  </li>
 <li>
  Now let's create (or reuse) a directory to hold the project.
  What I did was copy the struts-example.war from the Struts distribution
  and extracted it (using Winzip) like this:
  <br/>
  <img alt="" src="../images/how-to/netbeans/directory.jpg"></img><br/><br/><br/>
  </li>
 <li>
  Next we need to create a build.xml to build our project.  This file will sit in the root<br/>
  directory of your project. (Actually, it doesn't matter where sits so long as you make <br/>
  the appropriate changes to directories and such.)<br/>
  <br/>
  *Note - I will not spend any time here trying to convince you why you should be <br/>
  using Ant to build your projects.  I guess I consider this to be obvious.<br/>
  Here is the build.xml file I use for this demonstration (you MUST modify this <br/>
  to use your environment):<br/>
  <pre>
  
  &lt;project name="Struts Example" default="main" basedir="."&gt;
  
    &lt;!--  This is a basic build script, only the minimums here --&gt;
    
    &lt;!-- Tell ant to use my environment variables --&gt;
    &lt;property environment="env"/&gt;
  
    &lt;property file="./build.properties"/&gt;
  
      &lt;property name="build.compiler"     value="modern"/&gt;
      &lt;property name="build.dir"          value="./WEB-INF/classes" /&gt;
      &lt;property name="src.dir"            value="./WEB-INF/src"/&gt;
    &lt;property name="servlet.jar"        value="/Apache_Home/jakarta-servletapi-4/lib/servlet.jar"/&gt;
      &lt;property name="war.file"              value="struts-example"/&gt;
      &lt;property name="war.file.name"      value="${war.file}.war"/&gt;
      &lt;property name="tomcat.home"       value="${env.CATALINA_HOME}"/&gt;
      &lt;property name="deploy.dir"         value="${tomcat.home}/webapps"/&gt;
  
    &lt;path id="project.class.path"&gt;
        &lt;fileset dir="./WEB-INF/lib/"&gt;
            &lt;include name="**/*.jar"/&gt;
        &lt;/fileset&gt;
        &lt;pathelement path="${src.dir}"/&gt;
        &lt;pathelement path="${servlet.jar}"/&gt;
    &lt;/path&gt;
  
      &lt;target name="clean"&gt;
          &lt;delete dir="${build.dir}" includeEmptyDirs="true" /&gt;
      &lt;/target&gt;
  
  
      &lt;target name="prep"&gt;
          &lt;mkdir dir="${build.dir}"/&gt;
      &lt;/target&gt;
  
      &lt;target name="compile"&gt;
        &lt;javac   srcdir="${src.dir}"
                    destdir="${build.dir}"
                    debug="on"
                deprecation="on"&gt;
          &lt;include name="**/*.java"/&gt;
          &lt;classpath refid="project.class.path"/&gt;
        &lt;/javac&gt;
      &lt;/target&gt;
  
      &lt;target name="cleanWebApp"&gt;
        &lt;delete file="${deploy.dir}/${war.file.name}" /&gt;
          &lt;delete  dir="${deploy.dir}/${war.file}" includeEmptyDirs="true" /&gt;
      &lt;/target&gt;
  
      &lt;target name="war"&gt;
          &lt;war warfile="${war.file.name}" webxml="./WEB-INF/web.xml"&gt;
                 &lt;fileset dir="./" includes="**/*.*" excludes="*.war, **/*.nbattrs, web.xml, **/WEB-INF/**/*.*, **/project-files/**/*.*"/&gt;
                 &lt;webinf  dir="./WEB-INF"    includes="**/*" excludes="web.xml, **/*.jar, **/*.class"/&gt;
                 &lt;lib     dir="./WEB-INF/lib"/&gt;
                 &lt;classes dir="${build.dir}" includes="**/*.properties" /&gt;
          &lt;/war&gt;
      &lt;/target&gt;
  
      &lt;target name="deploy"&gt;
          &lt;copy todir="${deploy.dir}"&gt;
            &lt;fileset dir="./" includes="${war.file.name}"/&gt;
          &lt;/copy&gt;
      &lt;/target&gt;
 
    &lt;target name="main" depends="clean, prep, cleanWebApp, compile, war"/&gt;
  
  &lt;/project&gt;
  
  </pre>
  </li>
  <li>
  Build the project using Ant from the command line.<br/>
  Here's what I get:
  
  <pre>
  
  C:\personal\development\Projects\struts-examples\struts-example>ant
  Buildfile: build.xml
  
  clean:
     [delete] Deleting directory C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\classes
  
  prep:
      [mkdir] Created dir: C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\classes
  
  cleanWebApp:
     [delete] Deleting: C:\Apache_Home\jakarta-tomcat-4.0.6\webapps\struts-example.war
     [delete] Deleting directory C:\Apache_Home\jakarta-tomcat-4.0.6\webapps\struts-example
  
  compile:
      [javac] Compiling 22 source files to C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\classes
      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:78: warning: org.apache.struts.config.ApplicationConfig in org.apache.struts.config has been deprecated
      [javac] import org.apache.struts.config.ApplicationConfig;
      [javac]                                 ^
      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:185: warning: org.apache.struts.config.ApplicationConfig in org.apache.struts.config has been deprecated
      [javac]     public void init(ActionServlet servlet, ApplicationConfig config)
      [javac]                                             ^
      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:185: warning: init(org.apache.struts.action.ActionServlet,org.apache.struts.config.ApplicationConfig) in org.apache.struts.action.PlugIn has been deprecated
      [javac]     public void init(ActionServlet servlet, ApplicationConfig config)
      [javac]                 ^
      [javac] C:\personal\development\Projects\struts-examples\struts-example\WEB-INF\src\org\apache\struts\webapp\example\memory\MemoryDatabasePlugIn.java:185: warning: org.apache.struts.config.ApplicationConfig in org.apache.struts.config has been deprecated
      [javac]     public void init(ActionServlet servlet, ApplicationConfig config)
      [javac]                                             ^
      [javac] 4 warnings
  
  war:
        [war] Building war: C:\personal\development\Projects\struts-examples\struts-example\struts-example.war
  
  main:
  
  BUILD SUCCESSFUL
Total time: 11 seconds
  </pre>  
  <br/>
 </li>
 <li>
  If it did not build for you, verify that the external jars (external to this project) are 
  specified correctly.<br/>
  </li>
  <li>
  Now we can finish setting up our Netbeans project<br/><br/>
  Mount the directory where we extracted the example and where we ran the build:<br/>
  <img alt="" src="../images/how-to/netbeans/building1.jpg"></img><br/><br/><br/>
  <img alt="" src="../images/how-to/netbeans/building2.jpg"></img><br/><br/><br/>
  </li>
  <li>
  If specified correctly, Netbeans will parse the build.xml automatically and will use <br/>
  (mount jars) the resources that you've declared for building.<br/>
    <img alt="" src="../images/how-to/netbeans/building3.jpg"></img><br/><br/><br/>
  </li>
  <li>
    I usually get rid of the additional mounted directory under /WEB-INF/classes.  <br/>
    Since everything there gets overwritten with each build, I don't usually need to<br/> 
    see this (or possibly make changes in the wrong place)<br/>
    <img alt="" src="../images/how-to/netbeans/building4.jpg"></img><br/><br/><br/>
  </li>
  <li>
    In order for Netbeans to understand the package structure for our source code, we need<br/>
    to mount all source directories directly.  <br/><br/>
    *Note - Some IDEs will do this automatically <br/>
    (Eclipse) or can be configured from the project config file (JBuilder)<br/>
    <img alt="" src="../images/how-to/netbeans/building5.jpg"></img><br/><br/><br/>
    <img alt="" src="../images/how-to/netbeans/building6.jpg"></img><br/><br/><br/>
  </li>
  <li>
    Use your source mount point to add/edit/delete your .java files<br/>
    <img alt="" src="../images/how-to/netbeans/building7.jpg"></img><br/><br/><br/>
  </li>
  <li>
    Using the initial mount point, expand until you can right-click on the build.xml file (or one<br/>
    of the targets) and build the project<br/>
    <img alt="" src="../images/how-to/netbeans/building8.jpg"></img><br/><br/><br/>
  </li>
  <li>
    If you receive errors from Netbeans (choking on the XML parse), don't worry, I did too.<br/>
    I always call ant on the command line anyway, so I don't worry too much about the IDE's <br/>
    internal XML jars.<br/>
    <!--[:TODO:] finish this section with solution to Netbeans ant/xml incompatibility woes--><br/>
    <img alt="" src="../images/how-to/netbeans/building8.jpg"></img><br/><br/><br/>
  </li>
  <li>
    Feel free to change the code as you like, and then build and deploy your new app.
  </li>
  
</ol>

</section>
</body>
</document>
