å€ãã®äººã¯ãMavenãå®éã«éçºè ã®ãããžã§ã¯ãæ§é ã®éžæã®èªç±ã奪ãããããçŽæ¥æ±ºå®ãããšããäºå®ã奜ãŸãªããããããŸãããããã®èªç±ã¯ããã«å¯ŸããŠå€§èãªè°è«ãããã»ã©éèŠã§ãã ããã¯æããŸãã ç§ã®æèŠã§ã¯ãä»ã®ããæ·±å»ãªæ¬ ç¹ãããããæ¬ ç¹ããããŸã-ã¢ã»ã³ããªäžã®åé¡ã®èšºæã®é£ãããšãMavenãšãã©ã°ã€ã³ã®äžååãªããã¥ã¡ã³ãã§ãã
ãããžã§ã¯ãã®äžã§ãããŒã ã®æ°ããã¡ã³ããŒããã«ããçµã¿ç«ãŠãããšãã§ããªãã£ãã±ãŒã¹ããããŸããã2æéã®æåã®åŸãJavaã®5çªç®ã®ããŒãžã§ã³ãã¡ã€ã³ããŒãžã§ã³ãšããŠéä»ãã«ãªã£ãããã€ã³ã¹ããŒã«ãããŠããªãã£ããšãããããã«ããçµè«ãåãåããŸããã
ãã©ã°ã€ã³ãèŠã€ããŠèšå®ããããšãå°çã®èŠçã®èŒªã§ãããant'eã§ã®XMLããã°ã©ãã³ã°ãšæ¯èŒãããšãããã¯ãŸã äœããããŸããã
ããããé©åãªã¢ãããŒããšååãªã¹ãã«ãåããŠãããããä»äºã§Mavenãæããããšã¯ã»ãšãã©ãããŸããã
å®éããã®èšäºã§ã¯ãèŠãã¿ã«ã€ããŠã§ã¯ãªããã¢ãŒãã¿ã€ãããã®ã«ã¿ãã°ãããã³ç¬èªã®ã¢ãŒãã¿ã€ããšã«ã¿ãã°ã®äœæã«ã€ããŠèª¬æããŸãã
ãããã®ã·ã³ãã«ãªã³ã³ã»ããã掻çšããããšã§ãæ°ãããããžã§ã¯ããäœæããéã®ç掻ãå€§å¹ ã«ç°¡çŽ åã§ããŸãã
ããŒã«ã«ãã£ã¬ã¯ããªãäœæãã
Maven ã®ã¢ãŒãã¿ã€ãã¯ããœãŒã¹ãã¡ã€ã«ãšæ§æãã¡ã€ã«ã®æ§é ãšã¬ã€ã¢ãŠããå«ããæ°ãããããžã§ã¯ãã®ãã³ãã¬ãŒãã§ãã
å°ãªããšãäžåºŠMavenã§ãããžã§ã¯ããäœæããããšããã人ã¯èª°ã§ããã¢ãŒãã¿ã€ãã«åºããããŸããã ããšãã°ãã€ã³ã¿ãŒãããäžã«ãããããžã§ã¯ããäœæããäžè¬çãªæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
mvnã¢ãŒãã¿ã€ãïŒäœæ\ -DarchetypeGroupId = <archetype-groupId> \ -DarchetypeArtifactId = <archetype-artifactId> \ -DarchetypeVersion = <archetype-version> \ -DgroupId = <my-groupid> \ -DartifactId = <my-artifactId>
å¿ èŠãªãã©ã¡ãŒã¿ãŒãã©ãã§ååŸããããšãã質åã¯ãåžžã«ç§ãå¿é ãããŸãããéåžžãç§ã¯äžå¯§ã«Googleã«å°ãã圌ã¯éåžžç§ã«çããŸã
ããšãã°ãåçŽãªã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåã¯ã次ã®ããã«maven-archetype-quickstartãšããã¢ãŒãã¿ã€ãã䜿çšããŸãã
mvnã¢ãŒãã¿ã€ãïŒäœæ\ -DarchetypeGroupId = org.apache.maven.archetypes \ -DarchetypeArtifactId = maven-archetype-quickstart \ -DarchetypeVersion = 1.0 \ -DgroupId = org.example \ -DartifactId = simpleapp
ã¢ãŒãã¿ã€ãã䜿çšããŠãããžã§ã¯ããäœæãããã䟿å©ãªæ¹æ³ããããŸãïŒã¿ãŒã²ãããçæããŸãã 察話ã¢ãŒãã§åŒã³åºããããšãæ°ãããããžã§ã¯ãã®ãã©ã¡ãŒã¿ãŒãå ¥åããããã«æ±ããããŸãã
mvnã¢ãŒãã¿ã€ãïŒçæ
ããããåé¡ããããŸãã Mavenã¯ãæ¢è£œã®ãã³ãã¬ãŒãã®ãªã¹ãããæ°ãããããžã§ã¯ãã®ã¿ã€ããéžæããããšãææ¡ããŸãããªã¹ãã«ã¯ã300ãè¶ ãããªãã·ã§ã³ããããŸãã é©åãªãã³ãã¬ãŒããèŠã€ããã®ã¯ããªãéèŠãªã¿ã¹ã¯ã§ããéåžžãåºåããã¡ã€ã«ã«ãã³ãããŠãããå¿ èŠãªãã®ãã°ã¬ãŒãã§æ¢ããŸãã
å°ãã°ãŒã°ã«ã§ãç§ã¯ãã®åé¡ã®è§£æ±ºçãèªåã§èŠã€ããŸãããæçµçãªãã®ã§ã¯ãªããããªãåªé ãªãã³ãã§ãã ã¢ãŒãã¿ã€ãã¯ã«ã¿ãã°ã«çµåã§ããŸãïŒ ããããããã¯ã©ã®ããã«åœ¹ç«ã¡ãŸããïŒ
ãã£ã¬ã¯ããªãŒã¯ãããã眮ãããŠããURLã«ãã£ãŠæ±ºå®ãããŸããmavenã«å ããŠã3ã€ã®äºåå®çŸ©ããããã£ã¬ã¯ããªãŒããããŸãã
å éš | Mavenã«çµã¿èŸŒãŸããã¢ãŒãã¿ã€ããå«ãŸãããããã®æ°ã¯å°ãªãããã£ã¹ããªãã¥ãŒã·ã§ã³èªäœã«ãã§ã«äºå®äžæ¥ãŠããŸã |
ãªã¢ãŒã | http://repo1.maven.org/maven2/archetype-catalog.xmlã«ããmavenäžå€®ãã£ã¬ã¯ããªããã®å Žæã¯ãMavenã®çŸåšã®èšå®ã«ãã£ãŠç°ãªããŸããããšãã°ããã®URLããªããžããªãã©ãŒã®1ã€ã«åå®çŸ©ã§ããŸãã |
å°å ã® | éåžžã¯ã/ .m2 / archetype-catalog.xmlã«ããããŒã«ã«ãªããžããªã®ãã£ã¬ã¯ã㪠|
archetypeïŒgenerateã¿ãŒã²ããã«ã¯archetypeCatalogãã©ã¡ãŒã¿ãŒããããããã䜿çšããŠãå¯èœãªã¢ãŒãã¿ã€ããæ¢ããã£ã¬ã¯ããªã®ãªã¹ããæå®ã§ããŸãã ããã©ã«ãã§ã¯ããã©ã¡ãŒã¿ã®å€ã¯ããªã¢ãŒããããŒã«ã«ãã§ãã ãã ãããããããªã¢ãŒããåé€ãããšãã»ãŒå¿ èŠãªãã®ãåŸãããŸãã
ããšãã°ã次ã®ããã«ïŒ
grim @ blackboxïŒã/ projects $ mvn archetypeïŒgenerate -DarchetypeCatalog = local [...也æ¯...] ã¢ãŒãã¿ã€ããéžæããŠãã ããïŒ 1ïŒããŒã«ã«-> maven-archetype-quickstartïŒã¯ã€ãã¯ã¹ã¿ãŒãïŒ 2ïŒããŒã«ã«-> maven-archetype-archetypeïŒã¢ãŒãã¿ã€ãïŒ 3ïŒããŒã«ã«-> maven-archetype-webappïŒwebappïŒ çªå·ãéžæããŠãã ããïŒ1ïŒ
ãªã¢ãŒããã£ã¬ã¯ããªãããã¡ã€ã«æ§é ãèŠãããšãã§ããŸãã ããšãã°ãäžèšã®ãªã¹ããååŸããã«ã¯ããã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸã
<?xml version="1.0" encoding="UTF-8"?> <archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd" xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <archetypes> <archetype> <groupId>org.apache.maven.archetypes</groupId> <artifactId>maven-archetype-quickstart</artifactId> <version>1.1</version> <description>quickstart</description> </archetype> <archetype> <groupId>org.apache.maven.archetypes</groupId> <artifactId>maven-archetype-archetype</artifactId> <version>1.0</version> <description>archetype</description> </archetype> <archetype> <groupId>org.apache.maven.archetypes</groupId> <artifactId>maven-archetype-webapp</artifactId> <version>1.0</version> <description>webapp</description> </archetype> </archetypes> </archetype-catalog>
Mavenã®æ§æãå°ã掻çšããŠããã®ç¶æ³ãæ°žç¶çã«ããããšãã§ããŸã; archetypeCatalogå€æ°ã®å€ãèšå®ãããããã¡ã€ã«ãäœæããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãsettings.xmlãã¡ã€ã«ã«è¿œå ããŸã
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <archetypeCatalog>local</archetypeCatalog> </properties> </profile> </profiles>
å£ã²ãïŒ ããŠãåŒã³åºããããšããã¢ãŒãã¿ã€ãã®ç®æšã¯ã倧éã®ãŽãã®ä»£ããã«çæããããšã§ãããªãã®èšãããšã衚瀺ããããšã§ãã
ãšããã§ãã¢ãŒãã¿ã€ããã©ã°ã€ã³ã«ã¯å¥åŠãªã¯ããŒã«ã¿ãŒã²ããããããããŒã«ã«ãªããžããªãã¹ãã£ã³ããŠã¢ãŒãã¿ã€ããèŠã€ããèŠã€ãã£ããã¹ãŠã®ãã®ãããã£ã¬ã¯ããªãçæããŸãã æ®å¿µãªãããããã¥ã¡ã³ãã¯å°ã暪ããã£ãŠãããããã©ã«ãã§ã¯ããã¡ã€ã«ã¯mavenã衚瀺ãããã¯ãã®å Žæã§ã¯ãŸã£ããçæãããŸããã 次ã®ããã«æçããå¿ èŠããããŸãã
grim @ blackboxïŒã/ projects $ mvn archetypeïŒcrawl -Dcatalog =ã/ .m2 / archetype-catalog.xml
å ¬åŒã®ããã¥ã¡ã³ããšã¯ç°ãªãããã©ã¡ãŒã¿ãŒã¯catalogFileã§ã¯ãªããcatalogãšåŒã°ããŸãã
ã¢ãŒãã¿ã€ããäœæãã
æ€èšãã2çªç®ã®åé¡ã¯ãç¬èªã®ã¢ãŒãã¿ã€ãã®äœæã§ãã ãªããããå¿ èŠãªã®ã§ããïŒ ããã¯ãèŠããã®è±å¯ãªãã¹ãŠã®ã¢ãŒãã¿ã€ãã§ã¯ãåçŽãªWebéçºã«ã¯é©ããŠããªããšããåçŽãªçç±ã§å¿ èŠã§ãã åãmaven-archetype-webappãªã©ãé¡äŒŒãããã®ãããã€ããããŸããããã®èšè¿°åã¯å€ããlog4jãšéåžžã®jspãã³ãã¬ãŒãã¯ãããŸããã å šäœãšããŠã空ã®ãããžã§ã¯ããäœæããåŸããã¡ã€ã«ã¢ãŒãã«åãæ¿ããŠãGoogleã䜿çšããŠå¿ èŠãªãã¹ãŠãããçŽãå¿ èŠããããŸãã çµå±ã10åç®ã«ã¯ããããããŠããã®ã§ãèªåã®ã¢ãŒãã¿ã€ããäœæããããšã«ããŸããã ããå ·äœçã«ã¯ããµãŒãã¬ãã2.5 / JSP 2.1 / JSTL 1.2ãšããã«äœ¿çšã§ãããã®ã³ã°ã䜿çšããŠãåçŽãªspring-mvcã¢ããªã±ãŒã·ã§ã³ã®ãã©ã³ã¯ãäœæããŸãã
泚æã次ã®æ®µèœã§ãããã¯ã¢ãŒãã¿ã€ããšããèšèãžã®åç §ã®æ°ã«äŸåãããããããŸããã
ãŸããmaven-archetype-archetypeã¢ãŒãã¿ã€ãã䜿çšããŠãããšãã°åãã¢ãŒãã¿ã€ãã䜿çšããŠãã¢ãŒãã¿ã€ãã®ãããžã§ã¯ããäœæããå¿ èŠããããŸãïŒcreateã
grim @ blackboxïŒã/ projects $ mvn archetypeïŒcreate \ -DarchetypeArtifactId = maven-archetype-archetype \ -DartifactId = baremvc \ -DgroupId =äŸ
ã³ã³ãœãŒã«ã§èŠåŽããªãããã«ããããã«ãEclipseã«ç§»è¡ããŸãããããã¡ããã以äžã«æžãããŠããããšã¯ãã¹ãŠãvimãŸãã¯ãã®ãããªäœãã§è¡ãããšãã§ããŸãã
grim @ blackboxïŒã/ projects $ cd baremvc && mvn eclipeïŒeclipse
次ã«ãã€ã³ããŒããå®è¡ããŠãæ§é ãããã«è©³ãã調ã¹ãŸãã
ãããžã§ã¯ãã¯ãarchetype-resourcesãšMETA-INFã®2ã€ã®ãµããã©ã«ããŒãå«ã1ã€ã®ãªãœãŒã¹ãã©ã«ããŒã§æ§æãããŸãã æåã®ãã®ã«ã¯ãç§ãã¡ã®æ»åŸã«ããã°ã©ããŒã®äžä»£ã«ãã£ãŠäœæãããå°æ¥ã®ååºãããããžã§ã¯ãã®ããã¯ããŒã³ãå«ãŸãã2çªç®ã«ã¯ãã¡ã€ã«META-INF / maven / archetype.xmlãå«ãŸããŸãã ããã¯ã¢ãŒãã¿ã€ãèšè¿°åã§ãã ã¢ãŒãã¿ã€ãã«å«ãŸãããã®ã®èª¬æãå«ãŸããŸãã
ããã¯ããŒã³ã«å¿ èŠãªãã®ããã¹ãŠè¿œå ããŸããåçŽãªjspããŒãžãå€å°ãªããšã蚱容ã§ããweb.xmlãåçŽãªã³ã³ãããŒã©ãŒãlog4j.propertiesæ§æãè¿œå ããŸãã ããã¯ãã¹ãŠã¢ãŒã«ã€ãã«ãããããŠã³ããŒãã§ããŸã ã 泚ç®ãã¹ãèå³æ·±ãç¹ã®ãã¡ããããžã§ã¯ããäœæãããšãã«Mavenãè¡ã眮ãæãã«æ³šæããŠãã ããã ã¢ãŒãã¿ã€ãã¯VelocityããŒã¹ã®ãã³ãã¬ãŒããšã³ãžã³ãå®è£ ããŠããŸãããããã¯å®éã«ã¯ææžåãããŠããŸããã誰ããå察ã確信ããŠããå Žåã¯å ±æããŠãã ãããæè¬ããŸãã
ç¹ã«ããã³ãã¬ãŒããä»ããã³ã³ãããŒã©ãŒã¯ãããã±ãŒãžåã®çœ®æãå®è£ ããŸããã
// HomeController.java package $package; import org.apache.commons.logging.Log; @Controller public class HomeController { ...
Spring MVCæ§æãšã¿ãŒã²ããpom.xmlã®çæã§åãåãã䜿çšãããŸããã ãããŸã§ã®ãšãããç§ã«ç¥ãããŠããå€æ°ã®ãªã¹ãã¯ããªãå°ãªãã§ãïŒ $ groupId ã $ artifactId ã $ versionããã³$ package ã 誰ãã誰ããæå³ããããšãç解ããŠãããšæããŸããããã¯ãã¹ãŠãååãããããžã§ã¯ããäœæãããšãã«ç€ºãããŸãã
äžè¬çã«ããã³ãã¬ãŒãã®ããŒãã¯èå³æ·±ããæªè§£æ±ºã§ããå°ãåŸã§ãã£ãšæ·±ãæãäžãããšæããŸãããä»ã®ãšããã¯ãæ§ãããªããŒãºã«ã¯ååã§ãã
ãã³ãã¬ãŒãã®æºåããã»ã¹ãå®äºããããåãarchetype.xmlã§ããã¢ãŒãã¿ã€ãèšè¿°åãã¡ã€ã«ãæºåããå¿ èŠããããŸãã
<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd"> <id>baremvc</id> <sources> <source>src/main/java/HomeController.java</source> </sources> <resources> <resource>src/main/resources/log4j.properties</resource> <resource>src/main/webapp/home.jsp</resource> <resource>src/main/webapp/WEB-INF/applicationContext.xml</resource> <resource>src/main/webapp/WEB-INF/web.xml</resource> </resources> <testSources /> </archetype>
ã¿ã°ã¯ãã¢ãŒãã¿ã€ãã®artifactIdãšäžèŽããå¿ èŠããããŸãã ã¿ã°<sources>ããã³<resources>ã¯ãã¢ãŒãã¿ã€ãã®ããŸããŸãªéšåã®ãã³ãã¬ãŒãã察象ãšããŠããŸãã ç¹ã«ãwebappãã©ã«ããŒã®ãªãœãŒã¹ã¯<resources>ã¿ã°ã§æå®ããå¿ èŠããããŸãã ããã«ããã€ãã®æå¹ãªã»ã¯ã·ã§ã³ããããŸãã 以äžã¯ããããã§æå®ããããã³ãã¬ãŒããè¡ãæå¹ãªã»ã¯ã·ã§ã³ãšãã©ã«ããŒã§ãã
<ãœãŒã¹> | src / main / java |
<ãªãœãŒã¹> | src / main /ãªãœãŒã¹ |
<testSources> | src / test / java |
<testResources> | src / test / resources |
<siteResources> | src /ãµã€ã |
ãã¹ãŠã®æºåãæŽã£ããã次ã䜿çšããŠãªããžããªã«ã¢ãŒãã¿ã€ããã€ã³ã¹ããŒã«ã§ããŸãã
grim @ blackboxïŒã/ projects / baremvc $ mvn clean install
ããã§äœ¿çšããæºåãã§ããŸããã
ã°ãªã @ãã©ãã¯ããã¯ã¹ïŒã/ projects / baremvc $ cd .. grim @ blackboxïŒã/ projects $ mvn archetypeïŒcreate \ -DarchetypeGroupId = org.example \ -DarchetypeArtifactId = baremvc \ -DarchetypeVersion = 1.0 \ -DgroupId = org.example \ -DartifactId = baremvcapp
ç§ãã¡ã®å°ããªãããžã§ã¯ãã¯ç«ã¡äžããæºåãã§ããŠããŸãã
grim @ blackboxïŒã/ projects / baremvcapp $ cd baremvcapp grim @ blackboxïŒã/ projects / baremvcapp $ mvn tomcatïŒå®è¡
次ã«ããªã³ã¯httpïŒ// localhostïŒ8080 / baremvcappã䜿çšããŠããã®äœæã確èªã§ããŸãã
ããã§ãã¢ãŒãã¿ã€ããæºåããããšèšãããšãã§ããæã§ãŸãã¯ã¢ãŒãã¿ã€ãïŒã¯ããŒã«ã¿ãŒã²ããã䜿çšããŠããŒã«ã«ãã£ã¬ã¯ããªã«è¿œå ããŸãã
grim @ blackboxïŒã/ projects $ mvn archetypeïŒcrawl -Dcatalog = / home / grim / .m2 / archetype-catalog.xml
ããã§ãarchetypeïŒgenerateãåŒã³åºããšããªã¹ãã«è¡ã衚瀺ãããŸã
1ïŒããŒã«ã«-> baremvcïŒbaremvcïŒ
ç§ã¯ãããç¥çŠããŸãã
çµè«ãšããŠãäžèšã®æ¹æ³ã¯æ代é ãïŒalasïŒã§ãããå»æ¢äºå®ãšããŠããŒã¯ãããŠããŸãããããã§ãæ©èœããç«ã¯ããã¥ã¡ã³ãã®æ£ããæ¹æ³ã«ã€ããŠå«ã³ãŸããã ä»ã®ãšããç§ãç¥ã£ãŠããã®ã¯ãèšè¿°åãå€æŽãããããšã§ããçŸåšã¯archetype-metadata.xmlãšåŒã°ãããã匷åãªæ§æãæã£ãŠããŸãã ãã10幎åã«æžãã®ã«ååãªèšäºãããã°ããã®ã§ããã
ããŠã³ããŒãå¯èœãªã¢ãŒã«ã€ã
衚瀺ã§ãããœãŒã¹
䜿çšãããªãœãŒã¹
- ã¢ãŒãã¿ã€ãäœæã¬ã€ã-http ://maven.apache.org/plugins/maven-archetype-plugin-1.0-alpha-7/examples/archetype.html
- Mavenã¢ãŒãã¿ã€ããã©ã°ã€ã³-http ://maven.apache.org/archetype/maven-archetype-plugin/
- Maven-2幎éã®äœ¿çšåŸã®èã-http ://habrahabr.ru/blogs/personal/102181/
UPDïŒ ã¢ãŒãã¿ã€ãã®ç®æšããããŸãïŒcreate-from- projectããããžã§ã¯ããããã³ãã¬ãŒããçæããŸãã ãã³ãã¬ãŒãã¯ãtarget / generated-sources / archetypeãã©ã«ããŒã«çæãããŸãã ã€ãŸããå®éã«ã¯ãã©ã®ãããžã§ã¯ãããã§ãã¢ãŒãã¿ã€ããçæãããããåºçºç¹ãšããŠäœ¿çšã§ããŸãã ããããšã1nd1go