Java – RPM files generated using the Maven RPM plug-in
I tried to create my Maven project on my windows machine RPM file
I follow the steps given in the link below to implement it
http://tim-perry.co.uk/blog/2012/11/22/building_rpms_on_windows_with_maven
When I run the command MVN package RPM: attached rpm, it shows that the build was successful, but no RPM file was generated Instead, it creates a directory called "RPM" under the target and copies all the required files in this directory (as described in POM)
Let me know what I'm missing here
Here is the POM I'm using
<?xml version="1.0" encoding="UTF-8"?> <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/maven-v4_0_0.xsd "> <modelVersion>4.0.0</modelVersion> <groupId>com.org</groupId> <artifactId>inv_project</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>inv_project</name> <url>http://maven.apache.org</url> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>rpm-maven-plugin</artifactId> <version>2.0-beta-1</version> <extensions>true</extensions> <executions> <execution> <phase>package</phase> <goals> <goal>attached-rpm</goal> </goals> </execution> </executions> <configuration> <name>PName</name> <release>1</release> <copyright></copyright> <distribution></distribution> <workarea>target/rpm</workarea> <group></group> <mappings> <mapping> <directory>/bin/</directory> <filemode>755</filemode> <username>user</username> <groupname>sysop</groupname> <sources> <source> <location>test/</location> <includes> <include>*.jar</include> </includes> </source> </sources> </mapping> <mapping> <directory>/conf/</directory> <filemode>755</filemode> <username>user</username> <groupname>sysop</groupname> <sources> <source> <location>src/resources</location> <includes> <include>*.properties</include> </includes> </source> </sources> </mapping> </mappings> <postinstallScript /> </configuration> </plugin> </plugins> </build> </project>
Add log
[INFO] --- rpm-maven-plugin:2.0-beta-2:attached-rpm (attach-rpm) @ mvi_cmpipe --- [DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=0,ConflictMarker.markTime=0,ConflictMarker.nodeCount=30,ConflictIdSorter.graphTime=0,ConflictIdSorter.topsortTime=0,ConflictIdSorter.conflictIdCount=13,ConflictIdSorter.conflictIdCycleCount=0,ConflictResolver.totalTime=1,ConflictResolver.conflictItemCount=27,DefaultDependencyCollector.collectTime=14,DefaultDependencyCollector.transformTime=2} [DEBUG] org.codehaus.mojo:rpm-maven-plugin:jar:2.0-beta-2: [DEBUG] org.apache.maven:maven-plugin-api:jar:2.0:compile [DEBUG] org.codehaus.plexus:plexus-archiver:jar:1.0-alpha-5:compile [DEBUG] org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8:compile [DEBUG] junit:junit:jar:3.8.2:test [DEBUG] classworlds:classworlds:jar:1.1-alpha-2:compile [DEBUG] org.codehaus.plexus:plexus-utils:jar:1.5.7:compile [DEBUG] org.apache.maven:maven-artifact:jar:2.0:compile [DEBUG] org.apache.maven:maven-project:jar:2.0:compile [DEBUG] org.apache.maven:maven-profile:jar:2.0:compile [DEBUG] org.apache.maven:maven-artifact-manager:jar:2.0:compile [DEBUG] org.apache.maven:maven-repository-Metadata:jar:2.0:compile [DEBUG] org.apache.maven:maven-model:jar:2.0:compile [DEBUG] Created new class realm plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2 [DEBUG] Importing foreign packages into class realm plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2 [DEBUG] Imported: < project>com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:1.0-SNAPSHOT [DEBUG] Populating class realm plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2 [DEBUG] Included: org.codehaus.mojo:rpm-maven-plugin:jar:2.0-beta-2 [DEBUG] Included: org.codehaus.plexus:plexus-archiver:jar:1.0-alpha-5 [DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:1.5.7 [DEBUG] Excluded: org.apache.maven:maven-plugin-api:jar:2.0 [DEBUG] Excluded: org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8 [DEBUG] Excluded: junit:junit:jar:3.8.2 [DEBUG] Excluded: classworlds:classworlds:jar:1.1-alpha-2 [DEBUG] Excluded: org.apache.maven:maven-artifact:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-project:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-profile:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-artifact-manager:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-repository-Metadata:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-model:jar:2.0 [DEBUG] Configuring mojo org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2:attached-rpm from plugin realm ClassRealm[plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2,parent: sun.misc.Launcher$AppClassLoader@33d626a4] [DEBUG] Configuring mojo 'org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2:attached-rpm' with basic configurator --> [DEBUG] (f) artifact = com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:pom:1.0-SNAPSHOT [DEBUG] (f) attachedArtifacts = [] [DEBUG] (f) copyright = 2010,Org Siemens Networks [DEBUG] (f) distribution = NAC [DEBUG] (f) group = NAC [DEBUG] (s) directory = /bin/ [DEBUG] (s) filemode = 755 [DEBUG] (s) username = omc [DEBUG] (s) groupname = sysop [DEBUG] (s) location = D:\INV-project\test [DEBUG] (s) includes = [*.jar] [DEBUG] (s) sources = [{"D:\INV-project\test" incl:[*.jar]}] [DEBUG] (s) directory = /conf/ [DEBUG] (s) filemode = 755 [DEBUG] (s) username = omc [DEBUG] (s) groupname = sysop [DEBUG] (s) location = D:\INV-project\src\resources [DEBUG] (s) includes = [*.properties] [DEBUG] (s) sources = [{"D:\INV-project\src\resources" incl:[*.properties]}] [DEBUG] (f) mappings = [["/bin/" {%attr(755,omc,sysop)} from [{"D:\INV-project\test" incl:[*.jar]}]],["/conf/" {%attr(755,sysop)} from [{"D:\INV-project\src\resources" incl:[*.properties]}]]] [DEBUG] (f) name = ORG-generic_mediations [DEBUG] (f) project = MavenProject: com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:1.0-SNAPSHOT @ D:\INV-project\pom.xml [DEBUG] (f) projversion = 1.0-SNAPSHOT [DEBUG] (f) release = 1 [DEBUG] (f) summary = mvi_cmpipe [DEBUG] (f) workarea = D:\INV-project\target\rpm [DEBUG] -- end configuration -- [DEBUG] project version = 1.0-SNAPSHOT [WARNING] Version string truncated to 1.0 [DEBUG] targetArch = noarch [INFO] Creating directory D:\INV-project\target\rpm [INFO] Creating directory D:\INV-project\target\rpm\BUILD [INFO] Creating directory D:\INV-project\target\rpm\RPMS [INFO] Creating directory D:\INV-project\target\rpm\SOURCES [INFO] Creating directory D:\INV-project\target\rpm\SPECS [INFO] Creating directory D:\INV-project\target\rpm\SRPMS [INFO] Creating directory D:\INV-project\target\rpm\buildroot [INFO] Copying 1 files to D:\INV-project\target\rpm\buildroot\bin [INFO] Copying 1 files to D:\INV-project\target\rpm\buildroot\conf [INFO] Creating spec file D:\INV-project\target\rpm\SPECS\ORG-generic_mediations.spec [DEBUG] writing attriute string for directory: /bin/ [DEBUG] writing attriute string for directory: /conf/ [DEBUG] About to execute 'cmd.exe /X /C "rpmbuild -bb --buildroot D:\INV-project\target\rpm\buildroot --define "_topdir D:\INV-project\target\rpm" --target noarch ORG-generic_mediations.spec"' [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SETLOCAL [INFO] [INFO] D:\INV-project\target\rpm\SPECS>PUSHD . [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Update buildroot path [INFO] [INFO] D:\INV-project\target\rpm\SPECS>FOR /F "tokens=*" %i in ('cygpath D:\INV-project\target\rpm\buildroot') do SET NEW_buildrOOT=%i [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET NEW_buildrOOT=/cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm/buildroot [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Update topdir path [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET TOPDIR="_topdir D:\INV-project\target\rpm" [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET TOPDIR=D:\INV-project\target\rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>FOR /F "tokens=*" %i in ('cygpath "D:\INV-project\target\rpm"') do SET NEW_TOPDIR=%i [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET NEW_TOPDIR=/cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Replace path in spec-file [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET OLD_PATH=D:\\ORG\\Project\\MVI\\PM\\INV\\Eric3g_LTE\\trunk\\INV\\Install\\inv-project\\target\\rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET NEW_PATH=\/cygdrive\/d\/ORG\/Project\/MVI\/PM\/INV\/Eric3g_LTE\/trunk\/INV\/Install\/inv-project\/target\/rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>sed -s -i -e s/D:\\ORG\\Project\\MVI\\PM\\INV\\Eric3g_LTE\\trunk\\INV\\Install\\inv-project\\target\\rpm\\/\/cygdrive\/d\/ORG\/Project\/MVI\/PM\/INV\/Eric3g_LTE\/trunk\/INV\/Install\/inv-project\/target\/rpm\//g ORG-generic_mediations.spec [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Execute rpmbuild [INFO] [INFO] D:\INV-project\target\rpm\SPECS>bash -c "rpmb -bb --buildroot /cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm/buildroot --define ""_topdir /cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm"" --target "noarch" --define ""_build_name_fmt %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm"" ORG-generic_mediations.spec" [INFO] Building target platforms: noarch [INFO] Building for target noarch [INFO] Processing files: ORG-generic_mediations-1.0-1.noarch [INFO] [WARNING] error: No file attributes configured [WARNING] No file attributes configured [INFO] [INFO] RPM build errors: [INFO] [INFO] D:\INV-project\target\rpm\SPECS>POPD [INFO] [INFO] D:\INV-project\target\rpm\SPECS>ENDLOCAL [INFO] [INFO] --- rpm-maven-plugin:2.0-beta-2:attached-rpm (default-cli) @ mvi_cmpipe --- [DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=0,ConflictIdSorter.graphTime=1,DefaultDependencyCollector.collectTime=10,DefaultDependencyCollector.transformTime=2} [DEBUG] org.codehaus.mojo:rpm-maven-plugin:jar:2.0-beta-2: [DEBUG] org.apache.maven:maven-plugin-api:jar:2.0:compile [DEBUG] org.codehaus.plexus:plexus-archiver:jar:1.0-alpha-5:compile [DEBUG] org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8:compile [DEBUG] junit:junit:jar:3.8.2:test [DEBUG] classworlds:classworlds:jar:1.1-alpha-2:compile [DEBUG] org.codehaus.plexus:plexus-utils:jar:1.5.7:compile [DEBUG] org.apache.maven:maven-artifact:jar:2.0:compile [DEBUG] org.apache.maven:maven-project:jar:2.0:compile [DEBUG] org.apache.maven:maven-profile:jar:2.0:compile [DEBUG] org.apache.maven:maven-artifact-manager:jar:2.0:compile [DEBUG] org.apache.maven:maven-repository-Metadata:jar:2.0:compile [DEBUG] org.apache.maven:maven-model:jar:2.0:compile [DEBUG] Created new class realm plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2--650166454 [DEBUG] Importing foreign packages into class realm plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2--650166454 [DEBUG] Imported: < project>com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:1.0-SNAPSHOT [DEBUG] Populating class realm plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2--650166454 [DEBUG] Included: org.codehaus.mojo:rpm-maven-plugin:jar:2.0-beta-2 [DEBUG] Included: org.codehaus.plexus:plexus-archiver:jar:1.0-alpha-5 [DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:1.5.7 [DEBUG] Excluded: org.apache.maven:maven-plugin-api:jar:2.0 [DEBUG] Excluded: org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8 [DEBUG] Excluded: junit:junit:jar:3.8.2 [DEBUG] Excluded: classworlds:classworlds:jar:1.1-alpha-2 [DEBUG] Excluded: org.apache.maven:maven-artifact:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-project:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-profile:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-artifact-manager:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-repository-Metadata:jar:2.0 [DEBUG] Excluded: org.apache.maven:maven-model:jar:2.0 [DEBUG] Configuring mojo org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2:attached-rpm from plugin realm ClassRealm[plugin>org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2--650166454,parent: sun.misc.Launcher$AppClassLoader@33d626a4] [DEBUG] Configuring mojo 'org.codehaus.mojo:rpm-maven-plugin:2.0-beta-2:attached-rpm' with basic configurator --> [DEBUG] (f) artifact = com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:pom:1.0-SNAPSHOT [DEBUG] (f) attachedArtifacts = [com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:rpm:rpm:1.0-SNAPSHOT] [DEBUG] (f) copyright = 2010,sysop)} from [{"D:\INV-project\src\resources" incl:[*.properties]}]]] [DEBUG] (f) name = ORG-generic_mediations [DEBUG] (f) project = MavenProject: com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:1.0-SNAPSHOT @ D:\INV-project\pom.xml [DEBUG] (f) projversion = 1.0-SNAPSHOT [DEBUG] (f) release = 1 [DEBUG] (f) summary = mvi_cmpipe [DEBUG] (f) workarea = D:\INV-project\target\rpm [DEBUG] -- end configuration -- [DEBUG] project version = 1.0-SNAPSHOT [WARNING] Version string truncated to 1.0 [DEBUG] targetArch = noarch [INFO] Copying 1 files to D:\INV-project\target\rpm\buildroot\bin [INFO] Copying 1 files to D:\INV-project\target\rpm\buildroot\conf [INFO] Creating spec file D:\INV-project\target\rpm\SPECS\ORG-generic_mediations.spec [DEBUG] writing attriute string for directory: /bin/ [DEBUG] writing attriute string for directory: /conf/ [DEBUG] About to execute 'cmd.exe /X /C "rpmbuild -bb --buildroot D:\INV-project\target\rpm\buildroot --define "_topdir D:\INV-project\target\rpm" --target noarch ORG-generic_mediations.spec"' [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SETLOCAL [INFO] [INFO] D:\INV-project\target\rpm\SPECS>PUSHD . [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Update buildroot path [INFO] [INFO] D:\INV-project\target\rpm\SPECS>FOR /F "tokens=*" %i in ('cygpath D:\INV-project\target\rpm\buildroot') do SET NEW_buildrOOT=%i [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET NEW_buildrOOT=/cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm/buildroot [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Update topdir path [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET TOPDIR="_topdir D:\INV-project\target\rpm" [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET TOPDIR=D:\INV-project\target\rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>FOR /F "tokens=*" %i in ('cygpath "D:\INV-project\target\rpm"') do SET NEW_TOPDIR=%i [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET NEW_TOPDIR=/cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Replace path in spec-file [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET OLD_PATH=D:\\ORG\\Project\\MVI\\PM\\INV\\Eric3g_LTE\\trunk\\INV\\Install\\inv-project\\target\\rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>SET NEW_PATH=\/cygdrive\/d\/ORG\/Project\/MVI\/PM\/INV\/Eric3g_LTE\/trunk\/INV\/Install\/inv-project\/target\/rpm [INFO] [INFO] D:\INV-project\target\rpm\SPECS>sed -s -i -e s/D:\\ORG\\Project\\MVI\\PM\\INV\\Eric3g_LTE\\trunk\\INV\\Install\\inv-project\\target\\rpm\\/\/cygdrive\/d\/ORG\/Project\/MVI\/PM\/INV\/Eric3g_LTE\/trunk\/INV\/Install\/inv-project\/target\/rpm\//g ORG-generic_mediations.spec [INFO] [INFO] D:\INV-project\target\rpm\SPECS>REM Execute rpmbuild [INFO] [INFO] D:\INV-project\target\rpm\SPECS>bash -c "rpmb -bb --buildroot /cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm/buildroot --define ""_topdir /cygdrive/d/ORG/Project/MVI/PM/INV/Eric3g_LTE/trunk/INV/Install/inv-project/target/rpm"" --target "noarch" --define ""_build_name_fmt %{ARCH}/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm"" ORG-generic_mediations.spec" [INFO] Building target platforms: noarch [INFO] Building for target noarch [INFO] Processing files: ORG-generic_mediations-1.0-1.noarch [INFO] [INFO] [WARNING] error: No file attributes configured [INFO] RPM build errors: [WARNING] No file attributes configured [INFO] [INFO] D:\INV-project\target\rpm\SPECS>POPD [INFO] [INFO] D:\INV-project\target\rpm\SPECS>ENDLOCAL [DEBUG] Replacing attached artifact com.Org.oss.INV.cmpipe.routes:mvi_cmpipe:rpm:rpm:1.0-SNAPSHOT. Old path D:\INV-project\target\rpm\RPMS\noarch\ORG-generic_mediations-1.0-1.noarch.rpm,new path D:\INV-project\target\rpm\RPMS\noarch\ORG-generic_mediations-1.0-1.noarch.rpm. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.025 s [INFO] Finished at: 2014-10-09T19:45:00+05:30 [INFO] Final Memory: 6M/62M
Solution
Have you verified that RPMs can be built directly from the command line (i.e. outside Maven)?
If not, then the whole discussion is meaningless, so I will assume so
In this case, just pass the command to Maven exec plugin:
<project> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>rpmbuild</executable> <workingDirectory>${basedir}</workingDirectory> <arguments> <argument>--test</argument> </arguments> </configuration> </plugin> </plugins> </build> </project>
It will perfectly mimic anything you do on the command line
I hope it will help