-
-
Save bglopez/99f79101c62500d636617443e862944d to your computer and use it in GitHub Desktop.
Convert a NetBeans project to Maven
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
# generates Maven pom.xml based on nbproject | |
# d640492 | |
use strict; | |
use warnings; | |
use File::Basename; | |
sub print_dep($$$); | |
sub print_pom_header($$$); | |
sub print_pom_trailer; | |
-e 'nbproject/project.xml' or die "no nbproject/project.xml"; | |
-e 'nbproject/project.properties' or die "no nbproject/project.properties"; | |
open(STDOUT, '> pom.xml'); | |
my $project_name = `fgrep name nbproject/project.xml | head -1 | perl -ne 'print \$1 if /<name>(.+)<\\/name>/;'`; | |
chomp $project_name; | |
my $src_dir = `grep ^src.dir= nbproject/project.properties | head -1 | awk -F= '{print \$2}'`; | |
chomp $src_dir; | |
$src_dir =~ s/\r//g; | |
my $test_src_dir = `grep ^test.src.dir= nbproject/project.properties | head -1 | awk -F= '{print \$2}'`; | |
chomp $test_src_dir; | |
$test_src_dir =~ s/\r//g; | |
my $all_deps = `grep ^file.reference. nbproject/project.properties | awk -F= '{print \$2}' | sort | uniq`; | |
my @deps = split (/\n/, $all_deps); | |
my ($name,$path,$suffix); | |
print_pom_header($project_name, $src_dir, $test_src_dir); | |
for my $d (@deps) { | |
chomp $d; | |
$d =~ s|\\\\|\\|g; | |
$d =~ s|\\|/|g; | |
$d =~ s|\s||g; | |
($name,$path,$suffix) = fileparse($d); | |
next unless $name =~ /(.+).jar$/; | |
my $artifactId = $1; | |
print_dep($artifactId,$artifactId,$d); | |
} | |
print_pom_trailer; | |
exit 0; | |
sub print_dep($$$) { | |
my ($artifactId,$groupId,$systemPath) = (@_); | |
print <<EOL | |
<dependency> | |
<artifactId>$artifactId</artifactId> | |
<groupId>$groupId</groupId> | |
<scope>system</scope> | |
<version>1.0</version> | |
<systemPath>\${basedir}/$systemPath</systemPath> | |
</dependency> | |
EOL | |
} | |
sub print_pom_header($$$) { | |
my ($name, $src, $test) = (@_); | |
print <<EOL | |
<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.telstra.raa</groupId> | |
<artifactId>$name</artifactId> | |
<packaging>jar</packaging><!-- war --> | |
<version>1.0-SNAPSHOT</version> | |
<name>$name</name> | |
<build> | |
<sourceDirectory>$src</sourceDirectory> | |
<testSourceDirectory>$test</testSourceDirectory> | |
</build> | |
<dependencies> | |
EOL | |
} | |
sub print_pom_trailer { | |
print <<EOL | |
</dependencies> | |
</project> | |
EOL | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment