Date: Tue, 19 Mar 2024 03:34:35 +0000 (UTC) Message-ID: <190188367.54068.1710819275301@cwiki-he-fi.apache.org> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_54067_301724332.1710819275301" ------=_Part_54067_301724332.1710819275301 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Maven 3.0.0 or later is required to build Struts 2
First, let's review some Maven basics. Maven uses the notion of a build = life-cycle to which plugins can attach. Plugins are similar to Ant= tasks. When a Maven build is invoked, we specify a point in the life-cycle= up to which the build should proceed. The compile phase = comes before test, and test comes before package= , and package comes before install. Once we have Maven se= tup, we can invoke the Struts build, and specify which phase the build shou= ld use.
The install phase builds up the project ("package"), and instal=
ls any JARs it needs into your local repository (e.g. ~/.m2/repositor=
y
). Once installed, the JARs can be used by any other Maven project =
you build. The install phase is the default=
phase if none is specified.
To run a basic install, change to the root of the source distribution, a= nd enter
> mvn
That's it! Maven will download any dependencies the build needs; run all=
unit tests; package up the JARs; then install the new JARs locally. For yo=
ur convenience, copies of the JARs can be found in the target dire=
ctories of each module. For example, after the build, the main JAR can foun=
d at core/target/struts2-core-2.0-SNAPSHOT.jar
.
It's supposed to be automatic, but you= might still have to press the button
Sometimes, licensing restrictions prevent Maven from downloading all the= JARs that a build might need. For example, JavaMail and Activation, can on= ly be downloaded from Sun. When this happens, Maven will display a helpful = message that explains how to install these JARs manually. After downloading= the required JAR, follow the instructions to install it to the your local = repository. Once installed, the JAR is available to all your Maven builds, = not just Struts.
[INFO] Reacto= r Summary: [INFO] [INFO] Struts 2 .......................................... SUCCESS [6.016s] [INFO] XWork: Core ....................................... SUCCESS [1:08.08= 6s] [INFO] Struts 2 Core ..................................... SUCCESS [2:42.60= 4s] [INFO] Struts Plugins .................................... SUCCESS [0.944s] [INFO] Struts 2 Spring Plugin ............................ SUCCESS [13.523s= ] [INFO] Struts 2 Convention Plugin ........................ SUCCESS [16.473s= ] [INFO] Struts 2 JUnit Plugin ............................. SUCCESS [13.325s= ] [INFO] Webapps ........................................... SUCCESS [1.027s] [INFO] Blank Webapp ...................................... SUCCESS [9.572s] [INFO] JBoss Blank Webapp ................................ SUCCESS [7.814s] [INFO] Mail Reader Webapp ................................ SUCCESS [7.028s] [INFO] Struts 2 Portlet Plugin ........................... SUCCESS [20.995s= ] [INFO] Struts 2 DWR Plugin ............................... SUCCESS [4.432s] [INFO] Struts 2 Tiles Plugin ............................. SUCCESS [4.451s] [INFO] Struts 2 Portlet Tiles Plugin ..................... SUCCESS [3.741s] [INFO] Portlet Webapp .................................... SUCCESS [28.480s= ] [INFO] Struts 2 Struts 1 Plugin .......................... SUCCESS [8.353s] [INFO] Struts 2 Dojo Plugin .............................. SUCCESS [30.181s= ] [INFO] Struts 2 JSF Plugin ............................... SUCCESS [6.000s] [INFO] Struts 2 Configuration Browser Plugin ............. SUCCESS [7.531s] [INFO] Struts 2 Sitemesh Plugin .......................... SUCCESS [6.159s] [INFO] Struts 2 JSON Plugin .............................. SUCCESS [16.944s= ] [INFO] Showcase Webapp ................................... SUCCESS [20.303s= ] [INFO] Struts 2 REST Plugin .............................. SUCCESS [10.015s= ] [INFO] Struts 2 Rest Showcase Example .................... SUCCESS [6.928s] [INFO] Struts 2 Codebehind Plugin ........................ SUCCESS [10.394s= ] [INFO] Struts 2 Java Templates Plugin .................... SUCCESS [9.633s] [INFO] Struts 2 Jasper Reports Plugin .................... SUCCESS [5.920s] [INFO] Struts 2 JFreeChart Plugin ........................ SUCCESS [18.296s= ] [INFO] Struts 2 Pell Multipart Plugin .................... SUCCESS [3.891s] [INFO] Struts 2 Plexus Plugin ............................ SUCCESS [4.715s] [INFO] Struts 2 Sitegraph Plugin ......................... SUCCESS [8.009s] [INFO] Struts 2 TestNG Plugin ............................ SUCCESS [6.012s] [INFO] Struts 2 OVal Plugin .............................. SUCCESS [9.629s] [INFO] Struts 2 OSGi Plugin .............................. SUCCESS [8.118s] [INFO] Struts 2 Embedded JSP Plugin ...................... SUCCESS [30.524s= ] [INFO] Struts 2 GXP Plugin ............................... SUCCESS [4.878s] [INFO] Struts 2 CDI Plugin ............................... SUCCESS [7.620s] [INFO] Struts 2 Tiles 3 Plugin ........................... SUCCESS [5.132s] [INFO] Struts OSGi Bundles ............................... SUCCESS [0.254s] [INFO] Struts 2 OSGi Admin Bundle ........................ SUCCESS [5.204s] [INFO] Struts 2 OSGi Demo Bundle ......................... SUCCESS [4.582s] [INFO] Struts 2 Maven Archetypes ......................... SUCCESS [0.198s] [INFO] Struts 2 Archetypes - Angular JS .................. SUCCESS [10.509s= ] [INFO] Struts 2 Archetypes - Blank ....................... SUCCESS [1.440s] [INFO] Struts 2 Archetypes - Blank Convention ............ SUCCESS [1.324s] [INFO] Struts 2 Archetypes - Database Portlet ............ SUCCESS [0.990s] [INFO] Struts 2 Archetypes - Plugin ...................... SUCCESS [0.923s] [INFO] Struts 2 Archetypes - Portlet ..................... SUCCESS [0.888s] [INFO] Struts 2 Archetypes - Starter ..................... SUCCESS [1.992s] [INFO] Struts 2 Assembly ................................. SUCCESS [1:37.55= 6s] [INFO] --------------------------------------------------------------------= ---- [INFO] BUILD SUCCESS [INFO] --------------------------------------------------------------------= ---- [INFO] Total time: 12:23.728s [INFO] Finished at: Wed Oct 30 17:26:27 CET 2013 [INFO] Final Memory: 57M/945M [INFO] --------------------------------------------------------------------= ----
There are other phases that can be useful when working with Maven. The <= em>package phase will just JAR (or WAR) the modules. The test= phase will only execute unit-tests. The compile phase will only b= uild the source-code (but not the test sources). And the clean pha= se will remove all artifacts, typically the entire target director= y.
Maven has a great feature that will allow you to build up your IDEA or E= clipse project files based on the project build structure. Using the Maven = project files helps keep developers in-sync and efficient. The IDEA project= files are pre-configured to define in the Run/Debug menu many common tasks= , such as "execute all tests", "launch the showcase sample app", and so for= t.
The Maven IDEA plugin creates IDEA project and modules files, based on t= he Maven build configuraton (pom.xml).
First, be sure you have the latest IDEA plugin for Maven.
mvn -Dconnect= ionUrl=3Dscm:svn:http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-= idea-plugin \ -Dgoals=3Dinstall \ scm:bootstrap
Most often, we use Maven to build projects, but it can also run plugins = directly. To build an IDEA project file for Struts 2, including all the mod= ules, run
> mvn idea= :idea -Papps,extras,thirdparty,xwork
Maven will generate struts-parent.ipr, struts-parent.iws, and an iml file for each module listed Open up struts-pare= nt.ipr in IDEA, and you should be good to go.
If you ever need to rebuild your projects, running the idea:idea=
code> command again will update your files without overriding any informati=
on that doesn't conflict. If you do want to overwrite the project files, sp=
ecify the overwrite parameter as true.
> mvn idea= :idea -Doverwrite=3Dtrue -Papps,extras,thirdparty,plugins,xwork If you only need to rebuild some of the modules, adjust the list of "profil= es".
If you find the xwork module causing you problems, such as displaying as= "XWork" when it should be named "xwork", the problem is likely to be withi= n IDEA. Try clearing out your IDEA system cache and then run it again
For Eclipse, try
> mvn -Pth= irdparty,plugins,xwork eclipse:eclipse
Feedback Wanted
= span>Many Struts 2 developers use IDEA, and the Eclipse project files are not= as well-tested or featureful as the IDEA versions. But as far as we know, = they work!
Currently the sample applications can be deployed using the Maven 2 Jetty plugin. For example, you can run the showca= se example application from the command line:
cd apps/showc= ase mvn jetty:run
You could also use one of the Maven IDE plugins to run the plugin or sim=
ply execute the mvn
or mvn.bat
file as an externa=
l application within your IDE.
A good tutorial on how to use the Maven 2 jetty plugin along with your IDE=
, including JPDA debugging support, can be found at the Apache Wicket documentation.
A few helpful tips for using Maven are provided:
The whole Struts2 documentation resists on Confluence and during normal = build process is exported with SiteExporter tool locally to html files. To = perform that, you must have an account on Confluence. In most cases you don= 't need to export the whole Confluence, so you can skip this, just type com= mand:
mvn clean ins= tall -DskipWiki
During normal development cycle you don't need to create assembly packag= es which consist of all the libraries, example apps and docs - you can skip= them as well:
mvn clean ins= tall -DskipAssembly
If you are disconnected from the Internet or simply wish to make your bu= ild faster, pass in the -o argument and Maven won't check = for new modules to download.
mvn -o
If you get an OutOfMemoryError while running the tests:
// Bash export MAVEN_OPTS=3D-Xmx512m // Windows set MAVEN_OPTS=3D-Xmx512m
Although this shouldn't ever happen, sometimes tests do fail and you nee= d to build the framework anyway. If there's a problem, you can pass in the = skip tests parameter.
mvn -Dmaven.t= est.skip=3Dtrue
Of course, if you find tests are failing, please submit a patch to fix t= hem!
Struts 2 depends on the current snapshot artifact of XWork 2. Unfortunat= ely, if XWork 2 is modified in a significant way, the Struts build doesn't = check for and retrieve a new version of the XWork snapshot jar, resulting i= n compilation or unit test failures.
The solution is to clear out any stale XWork 2 jars in your local Maven =
repository, usually by removing the directory ~/.m2/repository/opensy=
mphony
. This will force the Struts Maven build to pull down a fresh =
copy of XWork and hopefully resolve your problem.
The default mirror for Maven builds ("ibiblio") can be slow and unreliab= le. Maven lets you specify alterna= tive mirrors so that you don't have to depend on ibiblio for everything= .
You can add new mirrors through the Settings file (~/.m2/settings.xml).<= /p>
<settings&= gt; <mirrors> <mirror> <id>dotsrc</id> <url>http://mirrors.dotsrc.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings>
Sometimes the alternative mirrors have problems too or aren't updated at= the same frequency as the main mirror. If you have trouble building, try c= ommenting out the aternative mirror.
In some cases it has been seen that Maven will complain if a module does=
n't exist, even though it is part of the current build. Often, the missing =
module turns up when executing mvn package
. A simple fix for t=
his is to run mvn install
instead. If you have to do this, it =
will probably only be a one time thing.