모든 하위 프로젝트에서 생성 된 아티팩트의 대상으로 사용할 수퍼 속성을 속성을 정의하려고합니다.
이를 위해 나는 사용하려고 생각 project/build/finalName
했지만 단순한 poms에서도 작동하지 않는 것 같습니다.
명령
mvn archetype:create \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DgroupId=com.mycompany.app \
-DartifactId=my-app
치어 리더
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>my-app</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<finalName>${project.name}-testing</finalName>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
그리고 내가 처형했을 때 :
$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building my-app
[INFO] task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /tmp/mvn_test/my-app/src/main/resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /tmp/mvn_test/my-app/src/test/resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: /tmp/mvn_test/my-app/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.mycompany.app.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar {execution: default-jar}]
[INFO] [install:install {execution: default-install}]
[INFO] Installing /tmp/mvn_test/my-app/target/my-app-testing.jar to /home/maxim/.m2/repository/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Sun Nov 21 18:37:02 IST 2010
[INFO] Final Memory: 17M/162M
[INFO] ------------------------------------------------------------------------
문자열 “testing”이 생성 된 이슈 이름의 어딘가에 나타날 것으로 예상합니다.
“finalName”의 목적을 오해하고 있습니까?
답변
당신은 설정 finalName
플러그인 구성 섹션에서 속성을 :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<finalName>myJar</finalName>
</configuration>
</plugin>
공식 문서에 표시된대로 .
최신 정보:
메이븐의 경우> = 3
Matthew의 의견을 바탕으로 이제 다음과 같이 할 수 있습니다.
<packaging>jar</packaging>
<build>
<finalName>WhatEverYouLikey</finalName>
</build>
버그 리포트 / 문서를 참조하십시오 .
답변
제공된 모든 답변은 필요 이상으로 복잡합니다. jar 파일을 작성한다고 가정하면 섹션에 <jar.finalName>
태그를 추가하기 만하면됩니다 <properties>
.
<properties>
<jar.finalName>${project.name}</jar.finalName>
</properties>
이것은 항아리를 생성합니다 :
project/target/${project.name}.jar
이것은 설명서 에 있습니다 User Property
.
finalName:
Name of the generated JAR.
Type: java.lang.String
Required: No
User Property: jar.finalName
Default: ${project.build.finalName}
명령 줄 사용법
명령 행에서이 옵션을 다음과 함께 사용할 수도 있습니다.
mvn -Djar.finalName=myCustomName ...
이것을 테스트하지는 않았지만 myCustomName.jar를 가져와야합니다.
답변
@Maxim이
시도 …
pom.xml
<groupId>org.opensource</groupId>
<artifactId>base</artifactId>
<version>1.0.0.SNAPSHOT</version>
..............
<properties>
<my.version>4.0.8.8</my.version>
</properties>
<build>
<finalName>my-base-project</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<goals>
<goal>install-file</goal>
</goals>
<phase>install</phase>
<configuration>
<file>${project.build.finalName}.${project.packaging}</file>
<generatePom>false</generatePom>
<pomFile>pom.xml</pomFile>
<version>${my.version}</version>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
코나드 mvn clean install
산출
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ base ---
[INFO] Building jar: D:\dev\project\base\target\my-base-project.jar
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ base ---
[INFO] Installing D:\dev\project\base\target\my-base-project.jar to H:\dev\.m2\repository\org\opensource\base\1.0.0.SNAPSHOT\base-1.0.0.SNAPSHOT.jar
[INFO] Installing D:\dev\project\base\pom.xml to H:\dev\.m2\repository\org\opensource\base\1.0.0.SNAPSHOT\base-1.0.0.SNAPSHOT.pom
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install-file (default) @ base ---
[INFO] Installing D:\dev\project\base\my-base-project.jar to H:\dev\.m2\repository\org\opensource\base\4.0.8.8\base-4.0.8.8.jar
[INFO] Installing D:\dev\project\base\pom.xml to H:\dev\.m2\repository\org\opensource\base\4.0.8.8\base-4.0.8.8.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
답변
패키지 단계에서 플러그인을 사용하면 파일 매핑을 통해 가져온 파일 이름을 구성 할 수 있습니다.
메이븐 이어 플러그인
http://maven.apache.org/plugins/maven-ear-plugin/examples/customize-file-name-mapping.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
[...]
<fileNameMapping>full</fileNameMapping>
</configuration>
</plugin>
http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html#outputFileNameMapping
프로파일 또는 무언가를 통해 버전을 ‘테스트’하도록 구성한 경우 war 패키지에서 작동합니다.
메이븐 전쟁 플러그인
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<encoding>UTF-8</encoding>
<outputFileNameMapping>@{groupId}@-@{artifactId}@-@{baseVersion}@@{dashClassifier?}@.@{extension}@</outputFileNameMapping>
</configuration>
</plugin>
답변
이것은 나를 위해 작동
mvn jar:jar -Djar.finalName=custom-jar-name
답변
실제로 사용한 접근 방식은 지정한대로 이름에 문자열 ‘testing’이있는 jar 파일을 수행하지만 기본 설치 명령은이 출력 행에 표시된 것처럼 ~ / .m2 / repository 디렉토리로 보냅니다.
/tmp/mvn_test/my-app/target/my-app-testing.jar to /home/maxim/.m2/repository/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
그런 이름의 항아리를 생성 한 다음 선택한 디렉토리에 복사하려고하는 것 같습니다.
여기에 설명 된대로 outputDirectory 특성을 사용하십시오. http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html
답변
나는 다음을 사용하고있다
....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<finalName>${project.groupId}/${project.artifactId}-${baseVersion}.${monthlyVersion}.${instanceVersion}</finalName>
</configuration>
</plugin>
....
이런 식으로 다른 시스템의 Jenkins에서 각 값을 개별적으로 또는 실용적으로 정의 할 수 있습니다.
mvn package -DbaseVersion=1 -monthlyVersion=2 -instanceVersion=3
이것은 폴더를 배치합니다 target\{group.id}\projectName-1.2.3.jar
시간을 절약하는 더 좋은 방법은
....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<finalName>${project.groupId}/${project.artifactId}-${baseVersion}</finalName>
</configuration>
</plugin>
....
변수에서 사용하는 것을 제외하고는 동일합니다.
mvn package -DbaseVersion=0.3.4
이것은 폴더를 배치합니다 target\{group.id}\projectName-1.2.3.jar
outputDirectory
내부를 사용 configuration
하여 패키지를 배치 할 위치를 지정할 수도 있습니다.