You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by kn...@apache.org on 2003/03/26 20:32:13 UTC
cvs commit: maven/src/plugins-build/native/src/main/org/apache/maven/natives/util JavaSourceTool.java
knielsen 2003/03/26 11:32:13
Added: src/plugins-build/native/xdocs properties.xml index.xml
.cvsignore navigation.xml tasks.xml goals.xml
src/plugins-build/native project.properties LICENSE.txt
.cvsignore project.xml plugin.jelly
src/plugins-build/native/src/main/org/apache/maven/natives/util
JavaSourceTool.java
Log:
Initial checking of the Native compilation plugin
Revision Changes Path
1.1 maven/src/plugins-build/native/xdocs/properties.xml
Index: properties.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<document>
<properties>
<title>Maven Native Plugin Properties</title>
<author email="apache@kav.dk">Kasper Nielsen</author>
</properties>
<body>
<section name="Native Plugin Properties">
<table>
<tr>
<th>Property</th>
<th>Optional?</th>
<th>Description</th>
</tr>
<tr>
<td>maven.jni.dest</td>
<td>Yes</td>
<td>
<p>Default value is
<code>${maven.build.dir}/jni</code>.</p>
</td>
</tr>
</table>
</section>
</body>
</document>
1.1 maven/src/plugins-build/native/xdocs/index.xml
Index: index.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<title>Maven Native Plug-in</title>
<author email="apache@kav.dk">Kasper Nielsen</author>
</properties>
<body>
<section name="Maven Native Plug-in">
<p>
This is a plugin that allows to compile c,c++,fortran code under maven with
different compilers such as gcc, msvc, bcc, ...
</p>
<p>
Currently, this plugin only supports generation of jni header files.
</p>
</section>
<section name="News">
<table>
<tr>
<th>Date</th>
<th>Description</th>
</tr>
<tr>
<td>26 Mar 2003</td>
<td>
Project Created
</td>
</tr>
</table>
</section>
</body>
</document>
1.1 maven/src/plugins-build/native/xdocs/.cvsignore
Index: .cvsignore
===================================================================
stylesheets
1.1 maven/src/plugins-build/native/xdocs/navigation.xml
Index: navigation.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Maven Native Plugin">
<title>Maven Native Plugin</title>
<body>
<links>
<item name="Maven" href="http://maven.apache.org/"/>
</links>
<menu name="Overview">
<item href="/index.html" name="Overview"/>
<item href="/goals.html" name="Goals"/>
<item href="/properties.html" name="Properties"/>
<item href="/tasks.html" name="Tasks"/>
</menu>
</body>
</project>
1.1 maven/src/plugins-build/native/xdocs/tasks.xml
Index: tasks.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<title>Tasks</title>
<author email="apache@kav.dk">Kasper Nielsen</author>
</properties>
<body>
<section name="Tasks">
<p>
Lists of todos and ideas for future versions.
</p>
<subsection name="Unassigned">
<p>
</p>
</subsection>
</section>
</body>
</document>
1.1 maven/src/plugins-build/native/xdocs/goals.xml
Index: goals.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<document>
<properties>
<title>Maven Native Plug-in Goals</title>
<author email="apache@kav.dk">Kasper Nielsen</author>
</properties>
<body>
<goals>
<goal>
<name>native:jniheader</name>
<description>Generates JNI header files</description>
</goal>
</goals>
</body>
</document>
1.1 maven/src/plugins-build/native/project.properties
Index: project.properties
===================================================================
# -------------------------------------------------------------------
# P R O J E C T P R O P E R T I E S
# -------------------------------------------------------------------
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.checkstyle.format = turbine
maven.license.licenseFile=${basedir}/../../../LICENSE.txt
1.1 maven/src/plugins-build/native/LICENSE.txt
Index: LICENSE.txt
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
1.1 maven/src/plugins-build/native/.cvsignore
Index: .cvsignore
===================================================================
target
maven.log
velocity.log
build.properties
.classpath
.project
1.1 maven/src/plugins-build/native/project.xml
Index: project.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<project>
<extend>${basedir}/../project.xml</extend>
<pomVersion>3</pomVersion>
<id>maven-native-plugin</id>
<name>Maven Native Plug-in</name>
<currentVersion>1.0</currentVersion>
<description>Plugin for native compilation c,c++, fortran</description>
<shortDescription>Native plugin</shortDescription>
<url>http://maven.apache.org/reference/plugins/native/</url>
<siteDirectory>/www/maven.apache.org/reference/plugins/native/</siteDirectory>
<repository>
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven/src/plugins-build/native/</connection>
<url>http://cvs.apache.org/viewcvs/maven/src/plugins-build/native/</url>
</repository>
<developers>
<developer>
<name>Kasper Nielsen</name>
<id>knielsen</id>
<email>apache@kav.dk</email>
<organization>it.edu</organization>
<roles>
<role>Architect</role>
</roles>
</developer>
</developers>
<contributors/>
<dependencies>
<dependency>
<id>ant-contrib:cpptasks</id>
<version>20030309.134440</version>
<properties>
<classloader>root</classloader>
</properties>
</dependency>
<dependency>
<id>bcel</id>
<version>5.0</version>
<properties>
<classloader>root</classloader>
</properties>
</dependency>
</dependencies>
</project>
1.1 maven/src/plugins-build/native/plugin.jelly
Index: plugin.jelly
===================================================================
<?xml version="1.0"?>
<project xmlns:j="jelly:core" xmlns:util="jelly:util">
<!--==================================================================-->
<!-- Compile all source code -->
<!--==================================================================-->
<goal name="native" description="NAtive compiler" prereqs="native:compile"/>
<goal name="native:compile" description="Compile the native compiler">
<echo>a</echo>
<taskdef name="cc" classname="net.sf.antcontrib.cpptasks.CCTask"/>
<typedef name="linker" classname="net.sf.antcontrib.cpptasks.LinkerDef"/>
<typedef name="compiler" classname="net.sf.antcontrib.cpptasks.CompilerDef"/>
<echo>b</echo>
<compiler id="gcc" name="gcc" if="use-gcc">
<compilerarg value="-O" unless="is-debug"/>
</compiler>
</goal>
<goal name="native:jniheader" description="make jniheaders for classes" prereqs="java:compile">
<fileScanner var="classFiles">
<fileset dir="${maven.build.dest}">
<patternset>
<include name="**/*.class"/>
</patternset>
</fileset>
</fileScanner>
<mkdir dir="${maven.build.dir}/jni"/>
<javah destdir="${maven.build.dir}/jni">
<classpath>
<pathelement location="${maven.build.dest}"/>
</classpath>
<j:useBean var="javaSourceTool" class="org.apache.maven.natives.util.JavaSourceTool"/>
<j:forEach var="file" items="${classFiles.iterator()}">
<j:set var="isNative" value="false"/>
<j:set var="clazz" value="${javaSourceTool.getBcelClass(file.toString())}"/>
<j:forEach var="method" items="${clazz.getMethods()}">
<j:if test="${method.isNative() == 'true'}">
<j:set var="isNative" value="true"/>
</j:if>
</j:forEach>
<j:if test="${isNative == 'true'}">
<class name="${clazz.className}"/>
</j:if>
</j:forEach>
</javah>
</goal>
</project>
1.1 maven/src/plugins-build/native/src/main/org/apache/maven/natives/util/JavaSourceTool.java
Index: JavaSourceTool.java
===================================================================
package org.apache.maven.natives.util;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import java.io.IOException;
import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.JavaClass;
/**
* @author Kasper Nielsen
*
*/
public class JavaSourceTool {
/**
* Parses the java class file and returns an isntance of a Bcel Class
*
* @param absoluteFileName the absolute file name to transform
* @return the Bcel Class.
* @throws IOException upon failure to read the java file
*/
public static final JavaClass getBcelClass(String absoluteFileName) throws IOException {
try {
ClassParser parser = new ClassParser(absoluteFileName);
JavaClass clazz= parser.parse();
return clazz;
} catch (Exception e) {
System.out.println("\nError parsing " + absoluteFileName + ": " + e + "\n");
return null;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org