èæ¯
ããªãé·ãéãç§ã¯Mavenãã«ãã·ã¹ãã ã䜿çšãããããžã§ã¯ãã«åãçµãã§ããŸããã åœåããããžã§ã¯ããçŸåšã»ã©å€§ãããªãã£ããšãããã®å®å
šãªã³ã³ãã€ã«ã®æéã¯æ¯èŒçåççã§ãããèŠæ
ãåŒãèµ·ãããŸããã§ããã ããããæéã®çµéãšãšãã«ãã³ãŒããå¢å€§ãããµããããžã§ã¯ãã®æ°ãåçã«å¢å ããå®å
šãªã³ã³ãã€ã«ã®å¹³åæéã¯6ã10åã«å¢å ããŸããã ããã¯ãéçºè
ããã®éé£ã®çµ¶ãéãªãæ
å ±æºãšãªããŸããã
ãŸããæ³šæããå¿
èŠããããŸãã 䞊åã¢ã»ã³ããªã䜿çšããªãã£ãã®ã¯ã ããã¯å®æçã«ããŸããŸãªåé¡ãåŒãèµ·ãããŸããã ããŒã«ã«ã¹ãã¬ãŒãžå
ã®ã¢ãŒãã£ãã¡ã¯ããç Žå£ãããããééã£ãé åºã§åçŽã«åéãããå€ãæªã³ã³ãã€ã«ã®ã³ãŒããæçµçãªWARã¢ãŒãã£ãã¡ã¯ãã«åé¡ãããŸãã ãã¡ãããäžéšã®éçºè
ã¯ãç¬èªã®å±éºãšãªã¹ã¯ã§äžŠåã¢ã»ã³ããªã䜿çšããŸããã ããããé
ããæ©ããã圌ãã¯äœãèµ·ãã£ãŠããã®ãçè§£ã§ããªãç¶æ³ã«é¥ããŸããã ãããŠã1ã€ã®ã¹ã¬ãããžã®ç°¡åãªåã³ã³ãã€ã«ãããã«åœ¹ç«ã¡ãŸããã
ããã¯ããªãé·ãéç¶ããŠããŸããããMavenã§ã®äœæ¥æ¹æ³ãæ¹åãã
æ¹æ³ãæäŸããããªã奜å¥å¿ã®åŒ·ãTakariã®Webãµã€ãã«åºããããŸããã
æãè峿·±ãã®ã¯æ¬¡ã®3ã€ã§ãã
ãŸããGitHubã§
Maven Wrapper ïŒGradleã®ã©ãããŒã®ã¢ããã°ïŒãã¬ã€ã¢ãŠãããŸããã
ããã§èª¬æããããŒã«ã¯ãMavenã®èª€åäœã®åé¡ã解決ããã ãã§ãªãããã«ãé床ã倧å¹
ã«åäžãããããšã«æ³šæããŠãã ããã
ãã®æ¹åã¯ãããŒã«ã«ãªããžããªã®ç Žæããã¢ãŒãã£ãã¡ã¯ãã®åé¡ã解決ããããšãç®çãšããŠããŸãã
å®éãMavenã§ã¯ãããŒã«ã«ã¹ãã¬ãŒãžïŒåºæ¬çã«ã¯ãã¡ã€ã«ã·ã¹ãã äžã®ãã£ã¬ã¯ããªïŒã§ã®äœæ¥ã¯ãã¹ã¬ããã»ãŒãã§ã¯ãªãæ¹æ³ã§å®è£
ãããŠããŸãã ã€ãŸã 䞊è¡ããŠã¢ã»ã³ãã«ãããŠãããããžã§ã¯ããåæã«åãäŸåé¢ä¿ãåºåãå§ããå Žåãçµæã¯å£ãããã¡ã€ã«ã«ãªããŸãã ãã®ãµããªã¡ã³ãã解決ããã®ã¯ãŸãã«ãã®åé¡ã§ãã
ããã䜿çšããã«ã¯ãã€ã³ã¹ããŒã«æžã¿ã®MavenãçŽæ¥å€æŽããå¿
èŠããããŸãã
curl -O https://repo1.maven.org/maven2/io/takari/aether/takari-local-repository/0.10.4/takari-local-repository-0.10.4.jar mv takari-local-repository-0.10.4.jar $M2_HOME/lib/ext curl -O https://repo1.maven.org/maven2/io/takari/takari-filemanager/0.8.2/takari-filemanager-0.8.2.jar mv takari-filemanager-0.8.2.jar $M2_HOME/lib/ext
ããã ãã§ã ãã以äžã®ã¢ã¯ã·ã§ã³ã¯äžèŠã§ãã ããã§ãããŒã«ã«ãªããžããªã§ã®ãã¹ãŠã®æäœãå®å
šã«ãªããŸãã ããèªäœã§ã¯ãå€ãã®ã¢ã»ã³ããªãåæã«çºçããã¹ããŒã¹ãç¯çŽããããã«1ã€ã®ãªããžããªã䜿çšããå Žåããã®æ¡åŒµæ©èœã¯CIãµãŒããŒã§ã®ã¿äœ¿çšã§ããŸãã ããããéåžžã®éçºè
ã«ãšã£ãŠã¯ããã®æ¡åŒµæ©èœãæ¢ã«ã€ã³ã¹ããŒã«ãããŠãããšããåæã§æ©èœããSmart Builderãšçµã¿åãããŠäœ¿çšââããæ¹ãè峿·±ãã§ãã
çµéšãããããããã«ããã®ãœãªã¥ãŒã·ã§ã³ã䜿çšãããšãã¢ã»ã³ããªã®åäœãå°ãé
ããªããŸãããããä¿¡é Œæ§ãé«ããªããŸãã
ãã®æ¡åŒµæ©èœã¯ãåã®æ¡åŒµæ©èœãšåæ§ã«ã€ã³ã¹ããŒã«ãããŸãã
curl -O https://repo1.maven.org/maven2/io/takari/maven/takari-smart-builder/0.4.0/takari-smart-builder-0.4.0.jar mv takari-smart-builder-0.4.0.jar $M2_HOME/lib/ext
ãŸããMavenãããžã§ã¯ããã«ãçšã®ããé«åºŠãªäžŠååã¢ã«ãŽãªãºã ãæäŸããŸãã æšæºã®Mavenã¢ã»ã³ããªã¹ã±ãžã¥ãŒã©ãšSmart Builderã®åäœã®éããæ¬¡ã®å³ã«ç€ºããŸãã

æšæºã®Maven䞊ååæŠç¥ã¯åçŽã§åçŽã§ãã ããã¯ãäŸåé¢ä¿ã®æ·±ãã®èšç®ã«åºã¥ããŠããŸãã Mavenã¯ããããžã§ã¯ããçµäºãããŸã§åãã¬ãã«ã§ãã¹ãŠã®ãããžã§ã¯ãã®äžŠåãã«ããå®è¡ããæ¬¡ã®ã¬ãã«ã«é²ã¿ãŸãã
äžæ¹ãTakari Smart Builderã¯ãããé«åºŠãªæŠç¥ã䜿çšããŸãã 圌ã¯äŸåé¢ä¿ã®ãã§ãŒã³ãèšç®ããããããžã«ã«ãœãŒããå®è¡ãããã®åŸã§ã®ã¿ãããžã§ã¯ãã®ã¢ã»ã³ããªãå¿
èŠãªã·ãŒã±ã³ã¹ã«ã€ããŠæ±ºå®ãäžããŸãã
ããã«ã ã³ã³ãã€ã«ããã»ã¹äžã«ã
.mvn /timing.propertiesãã¡ã€ã«å
ã®åãããžã§ã¯ãã®ã³ã³ãã€ã«æéãèšæ¶ããæ¬¡åã®ã³ã³ãã€ã«ãã§ããã ãæ©ãå®äºããããã«è¿œå æ
å ±ãšããŠäœ¿çšã
ãŸã ã
ãã®æ©èœã䜿çšããã«ã¯ãMavenã®èµ·åæã«è¿œå ã®ããŒãæå®ããå¿
èŠããããŸãã äŸïŒ
mvn clean install --builder smart -T1.0C
ããŒãžã§ã³Maven 3.3.1ã§ã¯ãããã€ãã®é©æ°ãå®è£
ãããŸããã äœããããŸãããããžã§ã¯ãã§Mavenã«ãŒãã«æ¡åŒµæ©èœãçŽæ¥å®£èšããæ©èœã ãããè¡ãã«ã¯ã
.mvn / extensions.xmlãã¡ã€ã«ã远å ããŸãã åè¿°ã®ä»é²ã§ã¯ããã®ãã¡ã€ã«ã®åœ¢åŒã¯æ¬¡ã®ãšããã§ãã
<?xml version="1.0" encoding="UTF-8"?> <extensions> <extension> <groupId>io.takari.maven</groupId> <artifactId>takari-smart-builder</artifactId> <version>0.4.1</version> </extension> <extension> <groupId>io.takari.aether</groupId> <artifactId>takari-local-repository</artifactId> <version>0.11.2</version> </extension> </extensions>
ããã§ãã©ã€ãã©ãªãMavenãã£ã¹ããªãã¥ãŒã·ã§ã³ã«çŽæ¥å ±åããå¿
èŠããªããªããŸããã ããããããšã§ãåãçµæãåŸãããŸãã
extensions.xmlãã¡ã€ã«ã¯ã
.mvnãã£ã¬ã¯ããªå
ã®å¯äžã®ãã¡ã€ã«ã§ã¯ãããŸããã ããã«ããã«2ã€ã®ãã¡ã€ã«ãé
眮ã§ããŸãïŒ
jvm.configããã³
maven.config ã
jvm.configã«ã¯ãçŸåšã®ãããžã§ã¯ãã®ã³ã³ãã€ã«ãéå§ããJVMãªãã·ã§ã³ãå«ãŸããŠããŸãã ããšãã°ããã®ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
-Xmx2g
-XXïŒ+ TieredCompilation
-XXïŒTieredStopAtLevel = 1
æåã®ãªãã·ã§ã³ã¯ããŒããµã€ãºã2 GBã«èšå®ããæ¬¡ã®2ã€ã¯Mavenã®ããŒãºã«åãããŠJVMãæé©åããŸãïŒ
ãã¡ããã芧ãã ãã ïŒã
maven.configã¯å¥ã®ãã©ã¡ãŒã¿ãŒãæã€ãã¡ã€ã«ã§ãããä»åã¯Mavenèªäœã§ãã äŸïŒ
-ãã«ããŒã¹ããŒã
-T1.0C
-e
ãããã£ãŠãããã©ã«ããã¹ããŒããã«ããŒã§ãããã¹ã¬ããã®æ°ãè«çã³ã¢ã®æ°ã«çããããšãæå®ã§ããŸãã ã€ãŸããç§ãã¡ããã ããã°
mvn clean install
ãã®åŸãã¢ã»ã³ããªã¯è€æ°ã®ã¹ã¬ããã§å®è¡ããããã¹ãŠã®æ¡åŒµæ©èœãšæé©åã䜿çšãããŸãã ããã«ãçµã¿èŸŒã¿ã¢ãžã¥ãŒã«ããã«ãããŠãããããã®èšå®ã¯åŒãç¶ãé©çšãããŸãã Mavenã¯ãçŸåšã®ãã£ã¬ã¯ããªã ãã§ãªãããã®èŠªã§ã.mvnãã£ã¬ã¯ããªãæ€çŽ¢ããŸãã
æ¬åœã«äžã€ã®æ³šæç¹ããããŸãã ãªããªã ã¢ã»ã³ããªã¯è€æ°ã®ã¹ã¬ããã«å
¥ãã®ã§ãã¢ã»ã³ããªãã°ã¯ãããã®ã¹ã¬ããã«ãã£ãŠç«¶åããŠè¡šç€ºãããŸãã ãã®çµæãåé¡ãçºçããå Žåãè¡ãæ··åšããŠãããšããäºå®ã«ãããäœãèµ·ããããåžžã«æç¢ºã§ã¯ãããŸããã ãã®å Žåã1ã€ã®ã¹ã¬ããã§ã¢ã»ã³ããªãå®è¡ããåé¡ã®åå ãææ¡ãããå Žåã¯ãã¢ã»ã³ããªãæåã§ã·ã³ã°ã«ã¹ã¬ããã¢ãŒãã«åãæ¿ããå¿
èŠããããŸãã
mvn -T1 clean install
Takariã©ã€ããµã€ã¯ã«ã¯ãããã©ã«ãã®Mavenã©ã€ããµã€ã¯ã«ïŒJARãã¡ã€ã«ã®æ§ç¯ïŒã®ä»£æ¿ã§ãã ãã®ç¹åŸŽçãªæ©èœã¯ã1ã€ã®æšæºã©ã€ããµã€ã¯ã«ã®5ã€ã®åå¥ã®ãã©ã°ã€ã³ã®ä»£ããã«ãåãæ©èœãåããªããäŸåé¢ä¿ãã¯ããã«å°ãªã1ã€ã®æ±çšãã©ã°ã€ã³ã䜿çšãããããšã§ãã ãã®çµæ-èµ·åãã¯ããã«éããªããããã©ãŒãã³ã¹ãæé©åããããªãœãŒã¹æ¶è²»ãå°ãªããªããŸãã ããã«ããã倿°ã®ã¢ãžã¥ãŒã«ãå«ãè€éãªãããžã§ã¯ããã³ã³ãã€ã«ããéã«ãããã©ãŒãã³ã¹ã倧å¹
ã«åäžããŸãã
ã¢ããã°ã¬ãŒããããã©ã€ããµã€ã¯ã«ãã¢ã¯ãã£ãã«ããã«ã¯ãã¢ã»ã³ããªã«æ¡åŒµæ©èœãšããŠ
takari-lifecycle-pluginã远å ããå¿
èŠããããŸãã
<build> <plugins> <plugin> <groupId>io.takari.maven.plugins</groupId> <artifactId>takari-lifecycle-plugin</artifactId> <extensions>true</extensions> </plugin> </plugins> </build>
ãŸããJARã¢ãžã¥ãŒã«ã®ã¢ã»ã³ããªãtakari-jarãšããŠãªãŒããŒã©ã€ãããŸãã
<project> <modelVersion>4.0.0</modelVersion> <groupId>io.takari.lifecycle.its.basic</groupId> <artifactId>basic</artifactId> <version>1.0</version> <packaging>takari-jar</packaging>
ãã®åŸãPOMãªã©ã®ãã¹ãŠã®ãããžã§ã¯ããããã³takari-jarãããžã§ã¯ãã¯ãæ°ããã©ã€ããµã€ã¯ã«ã䜿çšããŠã¢ã»ã³ãã«ãããŸãã
ãã¹ãŠã®JARã¢ãžã¥ãŒã«ã«å¯ŸããŠãã®ã©ã€ããµã€ã¯ã«ãæå¹ã«ããããšãã§ããŸãïŒããã¥ã¡ã³ããåç
§ïŒããã®å ŽåãããŸããŸãªMavenãã©ã°ã€ã³ãšã®ç«¶åãçºçãå§ããŸããã ãã®çµæãã¢ãžã¥ãŒã«ã®ããã±ãŒãžãåçŽã«åå®çŸ©ããããšã決å®ãããŸãããã¢ã»ã³ããªãæãªãããšãªãå®è¡ã§ããŸãã å®è·µã瀺ããŠããããã«ãããã¯ååãããããšã倿ããŸããã
takari-lifecycle-pluginæ¡åŒµæ©èœã䜿çšãããšãããŸããŸãªãã«ãèšå®ã®å Žæã倿Žãããããšã«ã泚æããŠãã ããã ãããã¯ããã®ãã©ã°ã€ã³ã®æ§æã»ã¯ã·ã§ã³ã«ç§»åããŸãã äŸïŒ
<plugins> <plugin> <groupId>io.takari.maven.plugins</groupId> <artifactId>takari-lifecycle-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins>
詳现ã«ã€ããŠã¯ã
ããã¥ã¡ã³ããåç
§ããŠãã ãã
ã ã
ã¿ã«ãªã«ã¯ã
Maven WrapperãšããçŽ æŽããããã®ããããŸãã Gradle Wrapperãšåæ§ã«ãã¯ããŒã³äœæåŸããã«ãããžã§ã¯ãã®æ§ç¯ãéå§ã§ããŸãã ã³ã³ãã¥ãŒã¿ãŒã«Mavenãã€ã³ã¹ããŒã«ããã³æ§æããå¿
èŠã¯ãããŸããã ããã«ãããã«ãããMavenã®å¿
èŠãªããŒãžã§ã³ããããžã§ã¯ãã«å²ãåœãŠãããšãã§ããŸãã
ãããžã§ã¯ãã«ã©ãããŒã远å ããæãç°¡åãªæ¹æ³ã¯ãã¢ãŒãã¿ã€ãã䜿çšããããšã§ãã ãããžã§ã¯ãã®ã«ãŒãã§å®è¡ããŸãã
mvn -N io.takari:maven:wrapper
ãã®åŸãçŸåšã®ãã£ã¬ã¯ããªã«2ã€ã®ã¹ã¯ãªããããããŸãã
- mvnw.bat-Windowsçš
- mvnw-* nixã·ã¹ãã çš
ãŸãã
ã©ãããŒèªäœãšãã®æ§æãã¡ã€ã«ã¯
.mvn / wrapperãã£ã¬ã¯ããªã«è¡šç€ºãããŸãã
ããã ãã§ã ãã®åŸã次ãåŒã³åºãããšãã§ããŸãã
./mvnw clean install
ãŸããå¥ã®ããŒãžã§ã³ã®Mavenãå¿
èŠãªå Žåã¯ãå¿
èŠãªURLã
.mvn / wrapper / maven-wrapper.propertiesæ§æã§èšå®ã§ããŸã ã
ç¹°ãè¿ãã«ãªããŸããããã¥ã¢ã³ã¹ããªããã°æ©èœããŸããã ããšãã°ãéãããããã¯ãŒã¯ãæã€çµç¹ã¯ãå€ãã®å Žåã
Nexusã
Artifactoryãªã©ã®ãããã·Mavenãªããžããªã䜿çšããŸãã ãã®å Žåãåéçºè
ã¯ããã®ãªããžããªã«å¯ŸããŠç¬èªã®ãã©ãŒïŒãã©ãŒïŒMavenãåå¥ã«æ§æããå¿
èŠããããŸãã ã©ãããŒã®ã€ããªãã®ãŒãšãããã«ççŸããã®ã¯ãèšå®ã®å¿
èŠããªãããšã§ãã
次ã®ããã«ããŠç¶æ³ããæãåºãããšãã§ããŸãããããžã§ã¯ãã§ã
次ã®åœ¢åŒã®
.mvn / settings.xmlãã¡ã€ã«ãäœæããŸãã
<?xml version="1.0" encoding="UTF-8"?> <settings> <mirrors> <mirror> <id>nexus-m2</id> <mirrorOf>*</mirrorOf> <url>http://repo.org.ru/nexus/content/groups/repo-all-m2</url> <name>Nexus M2</name> </mirror> </mirrors> </settings>
.mvn / maven.configãã¡ã€ã«ã«è¡ã远å ããŸã
--global-settings .mvn / settings.xml
ãã®çµæããã©ãŒãèªåçã«æ€åºãããŸãã
ãã¹ããšçµæ
äžèšã®ãã¹ãŠãããããžã§ã¯ãã®ã¢ã»ã³ããªã®å éã«é¢ããŠå°è±¡çãªçµæããããããªããã°æå³ããããŸããã ãããŠãæ ¹æ ããªãããã«ãç§ãã¡ã®äœæ¥ãããžã§ã¯ãã§åŸãããçµæãåŒçšããŸãã
ã ããç§ãã¡ã¯ïŒ
- äœæ¥ã³ã³ãã¥ãŒã¿ãŒïŒIntel CoreïŒTMïŒi5-3470 CPU @ 3.20GHz
- Linux Kubuntu 14.04
- Java 8b60
- Maven 3.3.3
- 234åã®pom.xmlãã¡ã€ã«ããããã«ããããžã§ã¯ãã ãããã®å€ãã¯ããŸããŸãªjarã¢ãŒãã£ãã¡ã¯ããåéããŸãããããã€ãã®ejbãwarãearãªã©ããããŸãã
ãªããªã ãããã©ãã®Mavenã§ãã«ãã¹ã¬ããã¢ã»ã³ããªã®åé¡ã芳å¯ãããå ŽåãïŒã»ãŒïŒåžžã«1ã€ã®ã¹ã¬ããã®ã¿ã䜿çšãããæçµçã«ã¯ãã«ãæéã5:32ïŒ5å32ç§ïŒä»¥äžã«ãªããŸããã ãã¹ãŠã®æé©åïŒäžŠåãã«ã+ takariã©ã€ããµã€ã¯ã«ïŒã®åŸããã«ãæéã¯1:33ã§ããã ã»ãŒ4åïŒ
äžéçµæã¯ãã¹ãŠä»¥äžã®è¡šã«ãŸãšããããŠããŸãã
ã©ãã ã£ã | ã¹ã¬ããæ° | è²»ãããæé |
---|
ããã©ã«ã | 1 | 5:32 |
ããã©ã«ã | 4 | 3:25 |
ã¹ããŒããã«ã | 4 | 3:18 |
ã¹ããŒããã«ã+ takari-jar | 1 | 3:23 |
ã¹ããŒããã«ã+ takari-jar | 4 | 1:33 |
Smart Buildã2åèµ·åããã2çªç®ã®çµæãèšé²ãããŸããã æåã®èµ·ååŸãã¢ã»ã³ããªã®å®è¡é åºãæé©åãããå ŽåããããŸãïŒããã¥ã¡ã³ããåç
§ïŒã
å¥åŠãªããšã«ãã·ã³ã°ã«ã¹ã¬ããã¢ãŒãã§ã®ã¿ã«ãªã©ã€ããµã€ã¯ã«ã®è¿œå ã«ããã4çªç®ã®ã¹ã¬ããã®ã¢ã»ã³ããªãšåãããã©ãŒãã³ã¹ãåäžããŸããããããã©ãMavenã§ã®ããã©ãŒãã³ã¹ãåäžããŸãã
çµè«ãšããŠ
ãã®èšäºã§èª¬æããããŒã«ãæè¿çºèŠããŸããã ãããã£ãŠããããã®äœ¿ç𿹿³ã¯äŸç¶ãšããŠéåžžã«æ§ããã§ãã ãããããããã€ãã®èœãšãç©Žã¯æéã®çµéãšãšãã«ãŸã åºãŠããã§ãããã ãããããããã«ãããã¢ã»ã³ããªã®ãã®ãããªæ¥é²çãªå éã¯ãæè¡ããã»ã¹ã§ãããã®æ©äŒã䜿çšãããªã¹ã¯ãè² ãã®ã«ååã§ããã æéãçµãŠã°ããããã©ããªãããããããŸãã
ãŸãã
github Takariã®ãªããžããªã«ã¯ãããã«è峿·±ããããžã§ã¯ããããã€ããããŸãã 圌ãã®èª¬æã¯ãã®èšäºã®ç¯å²å€ã§ããããããã誰ãä»ã®äººãäœãä»ã®ãã®ã«èå³ãæã€ã§ãããã
UPD
ã³ã¡ã³ãã§ãã§ã«è¿°ã¹ãããã«ããã£ãŒãããã¯ã¯éçºè
ããå¯ãããå§ããŸããã mvnw.batãã¡ã€ã«ã¯ãã®æ©èœãå®è¡ããªãããšã倿ããŸããã ç°¡åãªä¿®æ£ãè¡ãããæ©èœãé©åãªåœ¢åŒã«ãªããŸããã
ä¿®æ£ãããã¹ã¯ãªãã @REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- @REM Maven2 Start Up Batch script @REM @REM Required ENV vars: @REM JAVA_HOME - location of a JDK home dir @REM @REM Optional ENV vars @REM M2_HOME - location of maven2's installed home dir @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven @REM eg to debug Maven itself, use @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files @REM ---------------------------------------------------------------------------- @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' @echo off @REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% @REM set %HOME% to equivalent of $HOME if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") @REM Execute a user defined script before this one if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre @REM check for pre script, once with legacy .bat ending and once with .cmd ending if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" :skipRcPre @setlocal set ERROR_CODE=0 @REM To isolate internal variables from possible post scripts, we use another setlocal @setlocal @REM ==== START VALIDATION ==== if not "%JAVA_HOME%" == "" goto OkJHome echo. echo Error: JAVA_HOME not found in your environment. >&2 echo Please set the JAVA_HOME variable in your environment to match the >&2 echo location of your Java installation. >&2 echo. goto error :OkJHome if exist "%JAVA_HOME%\bin\java.exe" goto chkMHome echo. echo Error: JAVA_HOME is set to an invalid directory. >&2 echo JAVA_HOME = "%JAVA_HOME%" >&2 echo Please set the JAVA_HOME variable in your environment to match the >&2 echo location of your Java installation. >&2 echo. goto error :chkMHome if not "%M2_HOME%"=="" goto valMHome SET "M2_HOME=%~dp0.." if not "%M2_HOME%"=="" goto valMHome echo. echo Error: M2_HOME not found in your environment. >&2 echo Please set the M2_HOME variable in your environment to match the >&2 echo location of the Maven installation. >&2 echo. goto error :valMHome :stripMHome if not "_%M2_HOME:~-1%"=="_\" goto checkMCmd set "M2_HOME=%M2_HOME:~0,-1%" goto stripMHome :checkMCmd @rem if exist "%M2_HOME%\bin\mvn.cmd" goto init echo. echo Error: M2_HOME is set to an invalid directory. >&2 echo M2_HOME = "%M2_HOME%" >&2 echo Please set the M2_HOME variable in your environment to match the >&2 echo location of the Maven installation >&2 echo. goto error @REM ==== END VALIDATION ==== :init set MAVEN_CMD_LINE_ARGS=%* @REM Find the project base dir, ie the directory that contains the folder ".mvn". @REM Fallback to current working directory if not found. set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir set EXEC_DIR=%CD% set WDIR=%EXEC_DIR% :findBaseDir IF EXIST "%WDIR%"\.mvn goto baseDirFound cd .. IF "%WDIR%"=="%CD%" goto baseDirNotFound set WDIR=%CD% goto findBaseDir :baseDirFound set MAVEN_PROJECTBASEDIR=%WDIR% cd "%EXEC_DIR%" goto endDetectBaseDir :baseDirNotFound set MAVEN_PROJECTBASEDIR=%EXEC_DIR% cd "%EXEC_DIR%" :endDetectBaseDir IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig @setlocal EnableExtensions EnableDelayedExpansion for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% :endReadAdditionalConfig SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" @rem for %%i in ("%M2_HOME%"\boot\plexus-classworlds-*) do set CLASSWORLDS_JAR="%%i" set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.home=%M2_HOME%" "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% if ERRORLEVEL 1 goto error goto end :error set ERROR_CODE=1 :end @endlocal & set ERROR_CODE=%ERROR_CODE% if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost @REM check for post script, once with legacy .bat ending and once with .cmd ending if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" :skipRcPost @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' if "%MAVEN_BATCH_PAUSE%" == "on" pause if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% exit /B %ERROR_CODE%
ãŸããWindowsã§ã®å
šäœçãªã¢ã»ã³ããªã¯Linuxã§ã®ã¢ã»ã³ããªãããã¯ããã«é
ãããšãããããŸããã ãªãããããŸã æç¢ºã§ãªãã®ãã
UPD2
å¥ã®åŸ®åŠãªç¬éãæµ®äžããã
SonarQubeã®ãã«ãã¯Smart Builderãšç«¶åããŸãã ãªããªã
--builderã¹ããŒããªãã·ã§ã³ã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸããSonarQubeã§ã®ã¢ã»ã³ããªã§ã¯ãå®è¡ããã ãã§ã¯äžååã§ãã
mvn sonar:sonar
ãŸããæšæºã®ãã«ãæŠç¥ã«åãæ¿ããå¿
èŠããããŸãã
mvn --builder multithreaded sonar:sonar
ãŸãã¯
mvn --builder singlethreaded sonar:sonar
ç¶æ³ã«å¿ããŠã