How do I capture the Maven Jar name as a part of a Hudson job?How to change the build directory of a Hudson job?How to view test results in Hudson?How can I start a hudson job using Python?Capture the build number for a remote-triggered Hudson job?How to start Hudson with the existing configuration?what is the best way to use gnumake with hudsonRunning Hudson builds with a lower process priorityHow can I download Maven artifacts in chef?How to modify the job page of individual job in hudson?Jenkins Maven job has no “Maven Installation” option
Beginner's snake game using PyGame
Why would Lupin kill Pettigrew?
count number of files in directory with a certain name
When a current flow in an inductor is interrupted, what limits the voltage rise?
Is having a hidden directory under /etc safe?
What is/are this/these giant NASA box(es)?
Is it possible to change original filename of an exe?
Creating Fictional Slavic Place Names
Looking after a wayward brother in mother's will
What's the most polite way to say "shut up and let me work"?
How does one "dump" or deplete propellant without changing spacecraft attitude or trajectory?
Where did the “vikings wear helmets with horn” stereotype come from and why?
What are the benefits of cryosleep?
Can a wire having a 610-670 THz (frequency of blue light) AC frequency supply, generate blue light?
Is there an explanation for Austria's Freedom Party virtually retaining its vote share despite recent scandal?
Did airlines fly their aircraft slower in response to oil prices in the 1970s?
Why is there a need to modify system call tables in linux?
Adding strings in lists together
What caused the tendency for conservatives to not support climate change regulations?
Preserving culinary oils
What are the slash markings on Gatwick's 08R/26L?
What is game ban VS VAC ban in steam?
Can't connect to Internet in bash using Mac OS
How can I include a header file that contains `>` in its name?
How do I capture the Maven Jar name as a part of a Hudson job?
How to change the build directory of a Hudson job?How to view test results in Hudson?How can I start a hudson job using Python?Capture the build number for a remote-triggered Hudson job?How to start Hudson with the existing configuration?what is the best way to use gnumake with hudsonRunning Hudson builds with a lower process priorityHow can I download Maven artifacts in chef?How to modify the job page of individual job in hudson?Jenkins Maven job has no “Maven Installation” option
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have a Maven 3 job configured in my Hudson server.
When the Hudson server successfully builds the Maven jar, I have the jar being deployed to an SCP repository on another server.
I want to execute a relink.sh script on the remote host where one of the parameters is the name of the newly delivered jar file (e.g. /usr/bin/relink.sh myproject-0.0.2-SNAPSHOT.jar).
How do I get that Maven-based file / version name into a variable that I can then use in my Hudson call to execute the remote script?
shell hudson maven
add a comment |
I have a Maven 3 job configured in my Hudson server.
When the Hudson server successfully builds the Maven jar, I have the jar being deployed to an SCP repository on another server.
I want to execute a relink.sh script on the remote host where one of the parameters is the name of the newly delivered jar file (e.g. /usr/bin/relink.sh myproject-0.0.2-SNAPSHOT.jar).
How do I get that Maven-based file / version name into a variable that I can then use in my Hudson call to execute the remote script?
shell hudson maven
add a comment |
I have a Maven 3 job configured in my Hudson server.
When the Hudson server successfully builds the Maven jar, I have the jar being deployed to an SCP repository on another server.
I want to execute a relink.sh script on the remote host where one of the parameters is the name of the newly delivered jar file (e.g. /usr/bin/relink.sh myproject-0.0.2-SNAPSHOT.jar).
How do I get that Maven-based file / version name into a variable that I can then use in my Hudson call to execute the remote script?
shell hudson maven
I have a Maven 3 job configured in my Hudson server.
When the Hudson server successfully builds the Maven jar, I have the jar being deployed to an SCP repository on another server.
I want to execute a relink.sh script on the remote host where one of the parameters is the name of the newly delivered jar file (e.g. /usr/bin/relink.sh myproject-0.0.2-SNAPSHOT.jar).
How do I get that Maven-based file / version name into a variable that I can then use in my Hudson call to execute the remote script?
shell hudson maven
shell hudson maven
asked Aug 18 '14 at 17:58
Lorin S.Lorin S.
7518
7518
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
I'm not sure if you can or can't pass the variable, but a work-around would be to first copy the file to a staging directory, instead of directly to where you want it to go. Then have your script look in the staging directory for a file and move it:
STAGE_DIR=/path/to/stage
DEST_DIR=/path/to/dest
LINK=/path/to/link.jar
while read file; do
mv $file $DEST_DIR
ln -s -f $DEST_DIR/$(basename $file) $LINK
done < <( find $STAGE_DIR -name "myproject*SNAPSHOT.jar" )
You might want to do some error checking and exit with non-0 if there is, e.g., more than one file that matches, no files, etc. Have you solved the issue?
add a comment |
Like @zerodiff suggested there seems to be a number of ways to do this via Hudson but they all seemed to be brittle and difficult to maintain when managing a large number of projects. I instead used Maven's wagon plugin to implement the deployment via Maven instead of via Hudson.
The configuration I used in the maven projects:
<properties>
<!-- Deploy -->
<dev.server.hostname>192.168.1.1</dev.server.hostname>
<application.name>test-application</application.name>
<!-- Deploy -->
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>hudson</id>
<activation>
<property>
<name>env</name>
<value>hudson</value>
</property>
</activation>
<build>
<filters>
<filter>src/main/filters/$env-linux.properties</filter>
<filter>src/main/filters/$env.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-5</version>
<executions>
<execution>
<id>dev-deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>$project.build.directory</fromDir>
<includes>$project.build.finalName.jar</includes>
<url>scp://$dev.server.hostname/</url>
<toDir>/opt/$application.name</toDir>
<serverId>dev-deploy-server</serverId>
</configuration>
</execution>
<execution>
<id>execute-dev-deploy-commands</id>
<phase>deploy</phase>
<goals>
<goal>sshexec</goal>
</goals>
<configuration>
<url>scp://$dev.server.hostname/</url>
<serverId>dev-deploy-server</serverId>
<commands>
<command>sudo /etc/init.d/$application.name stop</command>
<command>sleep 2</command>
<command>sudo /opt/$application.name/relink.sh $project.build.finalName.jar</command>
<command>sudo /etc/init.d/$application.name start</command>
</commands>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
In my maven settings.xml, I have the credentials for the dev-deploy-server:
<server>
<id>dev-deploy-server</id>
<username>hudson_bot</username>
</server>
With the Maven plugin in Hudson, I added the "Invoke Maven 3" Build directive and:
- Goals: clean deploy
- Properties: env=hudson
Finally I set up the security between the two servers so that "hudson_bot" could scp to the dev-deploy-server and gave hudson_bot sudoer NO_PASSWD privileges to the two mentioned scripts in the ssh execute element.
add a comment |
You want to get the jar artifact name from Maven itself in order to prevent adjusting your script when developers change the artifact's id or version. Scanning for *.jar
files is not elegant as it would match more than the main artifact (e.g. *-javadoc.jar
).
So to get the main artifact version from Maven I rely on 2 facts:
- by default, the jar plugin uses the artifact's id and version for the final jar artifact, e.g.
target/the-service-0.0.1-SNAPSHOT.jar
the artifact's id, group and version are stored in
pom.properties
$ cat target/maven-archiver/pom.properties
#Generated by Apache Maven
#Fri Jul 06 15:10:03 CEST 2018
version=0.0.1-SNAPSHOT
groupId=net.company
artifactId=the-service
Note that java devs can still change the default build folder target
and break your hudson job.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "2"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f622247%2fhow-do-i-capture-the-maven-jar-name-as-a-part-of-a-hudson-job%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
I'm not sure if you can or can't pass the variable, but a work-around would be to first copy the file to a staging directory, instead of directly to where you want it to go. Then have your script look in the staging directory for a file and move it:
STAGE_DIR=/path/to/stage
DEST_DIR=/path/to/dest
LINK=/path/to/link.jar
while read file; do
mv $file $DEST_DIR
ln -s -f $DEST_DIR/$(basename $file) $LINK
done < <( find $STAGE_DIR -name "myproject*SNAPSHOT.jar" )
You might want to do some error checking and exit with non-0 if there is, e.g., more than one file that matches, no files, etc. Have you solved the issue?
add a comment |
I'm not sure if you can or can't pass the variable, but a work-around would be to first copy the file to a staging directory, instead of directly to where you want it to go. Then have your script look in the staging directory for a file and move it:
STAGE_DIR=/path/to/stage
DEST_DIR=/path/to/dest
LINK=/path/to/link.jar
while read file; do
mv $file $DEST_DIR
ln -s -f $DEST_DIR/$(basename $file) $LINK
done < <( find $STAGE_DIR -name "myproject*SNAPSHOT.jar" )
You might want to do some error checking and exit with non-0 if there is, e.g., more than one file that matches, no files, etc. Have you solved the issue?
add a comment |
I'm not sure if you can or can't pass the variable, but a work-around would be to first copy the file to a staging directory, instead of directly to where you want it to go. Then have your script look in the staging directory for a file and move it:
STAGE_DIR=/path/to/stage
DEST_DIR=/path/to/dest
LINK=/path/to/link.jar
while read file; do
mv $file $DEST_DIR
ln -s -f $DEST_DIR/$(basename $file) $LINK
done < <( find $STAGE_DIR -name "myproject*SNAPSHOT.jar" )
You might want to do some error checking and exit with non-0 if there is, e.g., more than one file that matches, no files, etc. Have you solved the issue?
I'm not sure if you can or can't pass the variable, but a work-around would be to first copy the file to a staging directory, instead of directly to where you want it to go. Then have your script look in the staging directory for a file and move it:
STAGE_DIR=/path/to/stage
DEST_DIR=/path/to/dest
LINK=/path/to/link.jar
while read file; do
mv $file $DEST_DIR
ln -s -f $DEST_DIR/$(basename $file) $LINK
done < <( find $STAGE_DIR -name "myproject*SNAPSHOT.jar" )
You might want to do some error checking and exit with non-0 if there is, e.g., more than one file that matches, no files, etc. Have you solved the issue?
answered Aug 29 '14 at 21:27
zerodiffzerodiff
1012
1012
add a comment |
add a comment |
Like @zerodiff suggested there seems to be a number of ways to do this via Hudson but they all seemed to be brittle and difficult to maintain when managing a large number of projects. I instead used Maven's wagon plugin to implement the deployment via Maven instead of via Hudson.
The configuration I used in the maven projects:
<properties>
<!-- Deploy -->
<dev.server.hostname>192.168.1.1</dev.server.hostname>
<application.name>test-application</application.name>
<!-- Deploy -->
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>hudson</id>
<activation>
<property>
<name>env</name>
<value>hudson</value>
</property>
</activation>
<build>
<filters>
<filter>src/main/filters/$env-linux.properties</filter>
<filter>src/main/filters/$env.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-5</version>
<executions>
<execution>
<id>dev-deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>$project.build.directory</fromDir>
<includes>$project.build.finalName.jar</includes>
<url>scp://$dev.server.hostname/</url>
<toDir>/opt/$application.name</toDir>
<serverId>dev-deploy-server</serverId>
</configuration>
</execution>
<execution>
<id>execute-dev-deploy-commands</id>
<phase>deploy</phase>
<goals>
<goal>sshexec</goal>
</goals>
<configuration>
<url>scp://$dev.server.hostname/</url>
<serverId>dev-deploy-server</serverId>
<commands>
<command>sudo /etc/init.d/$application.name stop</command>
<command>sleep 2</command>
<command>sudo /opt/$application.name/relink.sh $project.build.finalName.jar</command>
<command>sudo /etc/init.d/$application.name start</command>
</commands>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
In my maven settings.xml, I have the credentials for the dev-deploy-server:
<server>
<id>dev-deploy-server</id>
<username>hudson_bot</username>
</server>
With the Maven plugin in Hudson, I added the "Invoke Maven 3" Build directive and:
- Goals: clean deploy
- Properties: env=hudson
Finally I set up the security between the two servers so that "hudson_bot" could scp to the dev-deploy-server and gave hudson_bot sudoer NO_PASSWD privileges to the two mentioned scripts in the ssh execute element.
add a comment |
Like @zerodiff suggested there seems to be a number of ways to do this via Hudson but they all seemed to be brittle and difficult to maintain when managing a large number of projects. I instead used Maven's wagon plugin to implement the deployment via Maven instead of via Hudson.
The configuration I used in the maven projects:
<properties>
<!-- Deploy -->
<dev.server.hostname>192.168.1.1</dev.server.hostname>
<application.name>test-application</application.name>
<!-- Deploy -->
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>hudson</id>
<activation>
<property>
<name>env</name>
<value>hudson</value>
</property>
</activation>
<build>
<filters>
<filter>src/main/filters/$env-linux.properties</filter>
<filter>src/main/filters/$env.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-5</version>
<executions>
<execution>
<id>dev-deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>$project.build.directory</fromDir>
<includes>$project.build.finalName.jar</includes>
<url>scp://$dev.server.hostname/</url>
<toDir>/opt/$application.name</toDir>
<serverId>dev-deploy-server</serverId>
</configuration>
</execution>
<execution>
<id>execute-dev-deploy-commands</id>
<phase>deploy</phase>
<goals>
<goal>sshexec</goal>
</goals>
<configuration>
<url>scp://$dev.server.hostname/</url>
<serverId>dev-deploy-server</serverId>
<commands>
<command>sudo /etc/init.d/$application.name stop</command>
<command>sleep 2</command>
<command>sudo /opt/$application.name/relink.sh $project.build.finalName.jar</command>
<command>sudo /etc/init.d/$application.name start</command>
</commands>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
In my maven settings.xml, I have the credentials for the dev-deploy-server:
<server>
<id>dev-deploy-server</id>
<username>hudson_bot</username>
</server>
With the Maven plugin in Hudson, I added the "Invoke Maven 3" Build directive and:
- Goals: clean deploy
- Properties: env=hudson
Finally I set up the security between the two servers so that "hudson_bot" could scp to the dev-deploy-server and gave hudson_bot sudoer NO_PASSWD privileges to the two mentioned scripts in the ssh execute element.
add a comment |
Like @zerodiff suggested there seems to be a number of ways to do this via Hudson but they all seemed to be brittle and difficult to maintain when managing a large number of projects. I instead used Maven's wagon plugin to implement the deployment via Maven instead of via Hudson.
The configuration I used in the maven projects:
<properties>
<!-- Deploy -->
<dev.server.hostname>192.168.1.1</dev.server.hostname>
<application.name>test-application</application.name>
<!-- Deploy -->
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>hudson</id>
<activation>
<property>
<name>env</name>
<value>hudson</value>
</property>
</activation>
<build>
<filters>
<filter>src/main/filters/$env-linux.properties</filter>
<filter>src/main/filters/$env.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-5</version>
<executions>
<execution>
<id>dev-deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>$project.build.directory</fromDir>
<includes>$project.build.finalName.jar</includes>
<url>scp://$dev.server.hostname/</url>
<toDir>/opt/$application.name</toDir>
<serverId>dev-deploy-server</serverId>
</configuration>
</execution>
<execution>
<id>execute-dev-deploy-commands</id>
<phase>deploy</phase>
<goals>
<goal>sshexec</goal>
</goals>
<configuration>
<url>scp://$dev.server.hostname/</url>
<serverId>dev-deploy-server</serverId>
<commands>
<command>sudo /etc/init.d/$application.name stop</command>
<command>sleep 2</command>
<command>sudo /opt/$application.name/relink.sh $project.build.finalName.jar</command>
<command>sudo /etc/init.d/$application.name start</command>
</commands>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
In my maven settings.xml, I have the credentials for the dev-deploy-server:
<server>
<id>dev-deploy-server</id>
<username>hudson_bot</username>
</server>
With the Maven plugin in Hudson, I added the "Invoke Maven 3" Build directive and:
- Goals: clean deploy
- Properties: env=hudson
Finally I set up the security between the two servers so that "hudson_bot" could scp to the dev-deploy-server and gave hudson_bot sudoer NO_PASSWD privileges to the two mentioned scripts in the ssh execute element.
Like @zerodiff suggested there seems to be a number of ways to do this via Hudson but they all seemed to be brittle and difficult to maintain when managing a large number of projects. I instead used Maven's wagon plugin to implement the deployment via Maven instead of via Hudson.
The configuration I used in the maven projects:
<properties>
<!-- Deploy -->
<dev.server.hostname>192.168.1.1</dev.server.hostname>
<application.name>test-application</application.name>
<!-- Deploy -->
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>hudson</id>
<activation>
<property>
<name>env</name>
<value>hudson</value>
</property>
</activation>
<build>
<filters>
<filter>src/main/filters/$env-linux.properties</filter>
<filter>src/main/filters/$env.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-5</version>
<executions>
<execution>
<id>dev-deploy</id>
<phase>deploy</phase>
<goals>
<goal>upload</goal>
</goals>
<configuration>
<fromDir>$project.build.directory</fromDir>
<includes>$project.build.finalName.jar</includes>
<url>scp://$dev.server.hostname/</url>
<toDir>/opt/$application.name</toDir>
<serverId>dev-deploy-server</serverId>
</configuration>
</execution>
<execution>
<id>execute-dev-deploy-commands</id>
<phase>deploy</phase>
<goals>
<goal>sshexec</goal>
</goals>
<configuration>
<url>scp://$dev.server.hostname/</url>
<serverId>dev-deploy-server</serverId>
<commands>
<command>sudo /etc/init.d/$application.name stop</command>
<command>sleep 2</command>
<command>sudo /opt/$application.name/relink.sh $project.build.finalName.jar</command>
<command>sudo /etc/init.d/$application.name start</command>
</commands>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
In my maven settings.xml, I have the credentials for the dev-deploy-server:
<server>
<id>dev-deploy-server</id>
<username>hudson_bot</username>
</server>
With the Maven plugin in Hudson, I added the "Invoke Maven 3" Build directive and:
- Goals: clean deploy
- Properties: env=hudson
Finally I set up the security between the two servers so that "hudson_bot" could scp to the dev-deploy-server and gave hudson_bot sudoer NO_PASSWD privileges to the two mentioned scripts in the ssh execute element.
answered Aug 30 '14 at 14:19
Lorin S.Lorin S.
7518
7518
add a comment |
add a comment |
You want to get the jar artifact name from Maven itself in order to prevent adjusting your script when developers change the artifact's id or version. Scanning for *.jar
files is not elegant as it would match more than the main artifact (e.g. *-javadoc.jar
).
So to get the main artifact version from Maven I rely on 2 facts:
- by default, the jar plugin uses the artifact's id and version for the final jar artifact, e.g.
target/the-service-0.0.1-SNAPSHOT.jar
the artifact's id, group and version are stored in
pom.properties
$ cat target/maven-archiver/pom.properties
#Generated by Apache Maven
#Fri Jul 06 15:10:03 CEST 2018
version=0.0.1-SNAPSHOT
groupId=net.company
artifactId=the-service
Note that java devs can still change the default build folder target
and break your hudson job.
add a comment |
You want to get the jar artifact name from Maven itself in order to prevent adjusting your script when developers change the artifact's id or version. Scanning for *.jar
files is not elegant as it would match more than the main artifact (e.g. *-javadoc.jar
).
So to get the main artifact version from Maven I rely on 2 facts:
- by default, the jar plugin uses the artifact's id and version for the final jar artifact, e.g.
target/the-service-0.0.1-SNAPSHOT.jar
the artifact's id, group and version are stored in
pom.properties
$ cat target/maven-archiver/pom.properties
#Generated by Apache Maven
#Fri Jul 06 15:10:03 CEST 2018
version=0.0.1-SNAPSHOT
groupId=net.company
artifactId=the-service
Note that java devs can still change the default build folder target
and break your hudson job.
add a comment |
You want to get the jar artifact name from Maven itself in order to prevent adjusting your script when developers change the artifact's id or version. Scanning for *.jar
files is not elegant as it would match more than the main artifact (e.g. *-javadoc.jar
).
So to get the main artifact version from Maven I rely on 2 facts:
- by default, the jar plugin uses the artifact's id and version for the final jar artifact, e.g.
target/the-service-0.0.1-SNAPSHOT.jar
the artifact's id, group and version are stored in
pom.properties
$ cat target/maven-archiver/pom.properties
#Generated by Apache Maven
#Fri Jul 06 15:10:03 CEST 2018
version=0.0.1-SNAPSHOT
groupId=net.company
artifactId=the-service
Note that java devs can still change the default build folder target
and break your hudson job.
You want to get the jar artifact name from Maven itself in order to prevent adjusting your script when developers change the artifact's id or version. Scanning for *.jar
files is not elegant as it would match more than the main artifact (e.g. *-javadoc.jar
).
So to get the main artifact version from Maven I rely on 2 facts:
- by default, the jar plugin uses the artifact's id and version for the final jar artifact, e.g.
target/the-service-0.0.1-SNAPSHOT.jar
the artifact's id, group and version are stored in
pom.properties
$ cat target/maven-archiver/pom.properties
#Generated by Apache Maven
#Fri Jul 06 15:10:03 CEST 2018
version=0.0.1-SNAPSHOT
groupId=net.company
artifactId=the-service
Note that java devs can still change the default build folder target
and break your hudson job.
edited Jul 6 '18 at 14:13
answered Jul 6 '18 at 13:24
AlexAlex
11
11
add a comment |
add a comment |
Thanks for contributing an answer to Server Fault!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f622247%2fhow-do-i-capture-the-maven-jar-name-as-a-part-of-a-hudson-job%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown