- add nbi installer project for SDK to be able to build releases on the server
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8767 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
19
build.xml
@ -111,4 +111,23 @@
|
|||||||
<ant dir="sdk" target="hudson-stable"/>
|
<ant dir="sdk" target="hudson-stable"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="hudson-release" depends="-check-platform, -update-sdk-platform-config">
|
||||||
|
<exec executable="svn" dir="engine">
|
||||||
|
<arg value="cleanup" />
|
||||||
|
</exec>
|
||||||
|
<exec executable="svn" dir="engine">
|
||||||
|
<arg value="revert" />
|
||||||
|
</exec>
|
||||||
|
<exec executable="svn" dir="engine">
|
||||||
|
<arg value="cleanup" />
|
||||||
|
</exec>
|
||||||
|
<exec executable="svn" dir="engine">
|
||||||
|
<arg value="update" />
|
||||||
|
</exec>
|
||||||
|
<ant dir="engine" target="dist"/>
|
||||||
|
<ant dir="engine" target="build-bullet-natives"/>
|
||||||
|
<ant dir="engine" target="update-sdk"/>
|
||||||
|
<ant dir="sdk" target="hudson-release"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -22,6 +22,27 @@
|
|||||||
<ant antfile="build.xml" target="update-help-sets" inheritall="false" inheritrefs="false" dir="jme3-core/"/>
|
<ant antfile="build.xml" target="update-help-sets" inheritall="false" inheritrefs="false" dir="jme3-core/"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="build-installers">
|
||||||
|
<property file="nbproject/project.properties"/>
|
||||||
|
<ant antfile="template.xml" dir="nbi/stub">
|
||||||
|
<property name="suite.location" value="${basedir}"/>
|
||||||
|
<property name="suite.nbi.product.uid" value="${app.name}"/>
|
||||||
|
<property name="suite.nbi.product.version" value="${plugins.version}.0.0"/>
|
||||||
|
<property name="nbi.stub.location" value="${basedir}/nbi/stub"/>
|
||||||
|
<property name="nbi.stub.common.location" value="${basedir}/nbi/.common"/>
|
||||||
|
<property name="nbi.ant.tasks.jar" value="${basedir}/nbi/antlib/nbi-ant-tasks.jar"/>
|
||||||
|
<property name="nbi.registries.management.jar" value="${basedir}/nbi/antlib/nbi-registries-management.jar"/>
|
||||||
|
<property name="nbi.engine.jar" value="${basedir}/nbi/antlib/nbi-engine.jar"/>
|
||||||
|
<property name="nbi.license.file" value="${basedir}/jme-license.txt"/>
|
||||||
|
<property name="generate.installer.for.platforms" value="windows linux macosx"/>
|
||||||
|
<property name="generator-jdk-location-forward-slashes" value="${java.home}"/>
|
||||||
|
<property name="generated-installers-location-forward-slashes" value="${basedir}/build/installer"/>
|
||||||
|
<property name="pack200.enabled" value="true"/>
|
||||||
|
<property name="nbi.icon.file" value="${basedir}/jmonkeyplatform.png"/>
|
||||||
|
<property name="nbi.dock.icon.file" value="${basedir}/jmonkeyplatform.icns"/>
|
||||||
|
</ant>
|
||||||
|
</target>
|
||||||
|
|
||||||
<target name="-create-netbeans-config">
|
<target name="-create-netbeans-config">
|
||||||
<!--replaces default values in jmonkeyplatform.conf file with run.args.extra from project.properties-->
|
<!--replaces default values in jmonkeyplatform.conf file with run.args.extra from project.properties-->
|
||||||
<mkdir dir="build/launcher/etc"/>
|
<mkdir dir="build/launcher/etc"/>
|
||||||
@ -106,6 +127,9 @@
|
|||||||
<target name="hudson-stable" depends="suite.clean, -revert-svn-changes, set-impl-version, suite.nbms, unset-spec-version">
|
<target name="hudson-stable" depends="suite.clean, -revert-svn-changes, set-impl-version, suite.nbms, unset-spec-version">
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="hudson-release" depends="suite.clean, set-spec-version, build-installers, unset-spec-version">
|
||||||
|
</target>
|
||||||
|
|
||||||
<target name="set-spec-version">
|
<target name="set-spec-version">
|
||||||
<property file="nbproject/project.properties"/>
|
<property file="nbproject/project.properties"/>
|
||||||
<foreach target="-do-spec-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
|
<foreach target="-do-spec-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
|
||||||
@ -318,5 +342,5 @@ for coding and for managing and creating game assets.
|
|||||||
</description>
|
</description>
|
||||||
</deb>
|
</deb>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
258
sdk/nbi/.common/common.properties
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# Initialization. Properties that are used during build script initialization.
|
||||||
|
|
||||||
|
# location of the custom tasks' sources and the destination directory for their
|
||||||
|
# build
|
||||||
|
custom.tasks.src=${common.dir}/../.ant-lib/src
|
||||||
|
custom.tasks.cls=${basedir}/.ant-lib
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# Check-out. Properties that are used during check-out.
|
||||||
|
|
||||||
|
# whether to check out sources, or copy them from the location specified in
|
||||||
|
# ${sources.dir}; 'true'/'false'
|
||||||
|
checkout.sources=true
|
||||||
|
|
||||||
|
# coordinates of the project's sources within the cvs repository
|
||||||
|
# * ${cvs.root} - obvious
|
||||||
|
# * ${cvs.branch} - the branch from which the sources should be checked out; if
|
||||||
|
# this property is empty, then the sources will be checked out from trunk
|
||||||
|
# * ${cvs.timestamp} - the timestamp for which the sources should be checked out; if
|
||||||
|
# this property is empty, then the latest sources will be checked out
|
||||||
|
# * ${cvs.module} - the module that should be checked out; at this point the
|
||||||
|
# build framework is not compatible with modules which alias several other
|
||||||
|
# modules
|
||||||
|
cvs.root=:pserver:anoncvs@netbeans.org:/cvs
|
||||||
|
cvs.branch=
|
||||||
|
cvs.module=nbi
|
||||||
|
cvs.timestamp=
|
||||||
|
|
||||||
|
# coordinates of the project's sources' localized files within the cvs
|
||||||
|
# repository
|
||||||
|
# * ${translatedfiles.module} - name of the cvs module with the localized files
|
||||||
|
# * ${translatedfiles.path} - path to the localized files for the project
|
||||||
|
# within the cvs module
|
||||||
|
translatedfiles.module=translatedfiles
|
||||||
|
translatedfiles.path=src/${cvs.module}/${cvs.path}
|
||||||
|
|
||||||
|
# sources parameters; a search-and-replace will be run over the sources after
|
||||||
|
# check-out, replacing [token] => [value]; regular expressions are not allowed
|
||||||
|
# * ${sources.params.length} - total number of the parameters
|
||||||
|
# * indices should start with 1
|
||||||
|
# * parameters are not i18n compliant
|
||||||
|
sources.params.length=0
|
||||||
|
#sources.params.1.token=
|
||||||
|
#sources.params.1.value=
|
||||||
|
|
||||||
|
# several simple shorthands for various directories
|
||||||
|
# * ${cvs.module.dir} - path to the root of the cvs module
|
||||||
|
# * ${cvs.dir} - path to the current project's sources root
|
||||||
|
# * ${translatedfiles.dir} - path to the localized files for the project
|
||||||
|
cvs.module.dir=${work.dir}/${cvs.module}
|
||||||
|
cvs.dir=${cvs.module.dir}/${cvs.path}
|
||||||
|
translatedfiles.dir=${work.dir}/${translatedfiles.module}/${translatedfiles.path}
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# NB Projects. Properties related to cleaning/building netbeans projects.
|
||||||
|
|
||||||
|
# path to the netbeans project that should be built; relative to the
|
||||||
|
# ${cvs.dir}
|
||||||
|
nbproject.path=.
|
||||||
|
|
||||||
|
# names of targets in component's (or engine's) build script that will be
|
||||||
|
# called as part of the build process
|
||||||
|
# * ${nb.target.clean} - will be called when cleaning the netbeans project
|
||||||
|
# * ${nb.target.build} - will be called when building the netbeans project
|
||||||
|
nb.target.clean=clean
|
||||||
|
nb.target.build=jar
|
||||||
|
|
||||||
|
# additional properties which will be passed to the netbeans project build
|
||||||
|
# script
|
||||||
|
# * ${nb.platform.home} - location of the jdk codenamed "JDK 1.5", this jdk
|
||||||
|
# is expected to be used by all netbeans projects
|
||||||
|
# * ${nb.ignore.native} - tells the netbeans project's build script to skip
|
||||||
|
# building native components, if it is able to do so - these will be built
|
||||||
|
# as part of the project's global build script
|
||||||
|
# * ${nb.no.dependencies} - tells the netbeans project's build script to skip
|
||||||
|
# building its dependencies, the dependencies are expected to be built by the
|
||||||
|
# project's global build script
|
||||||
|
# * ${nb.dont.build.custom.tasks} - tells the netbeans project's build script
|
||||||
|
# to skip building custom tasks for it, as they will already be built by the
|
||||||
|
# global script
|
||||||
|
# * ${nb.custom.tasks.cls} - points the netbeans project's build script to the
|
||||||
|
# location of the built custom tasks
|
||||||
|
nb.platform.home=-Dplatforms.JDK_1.5.home=${java.home}/..
|
||||||
|
nb.platform.home.macos=-Dplatforms.JDK_1.5.home=${java.home}
|
||||||
|
nb.ignore.native=-Dignore.native=true
|
||||||
|
nb.no.dependencies=-Dno.dependencies=true
|
||||||
|
nb.dont.build.custom.tasks=-Ddont.build.custom.tasks=true
|
||||||
|
nb.custom.tasks.cls=-Dcustom.tasks.cls=${custom.tasks.cls}
|
||||||
|
|
||||||
|
# default path to the distributives directory of the netbeans project; relative
|
||||||
|
# to ${nbproject.path}
|
||||||
|
nb.dist.path=dist
|
||||||
|
|
||||||
|
# path to the classes directory of the netbeans project; relative to
|
||||||
|
# ${nbproject.path}
|
||||||
|
nb.classes.dir=build/classes
|
||||||
|
|
||||||
|
# path to the manifest file of the netbeans project; relative to the
|
||||||
|
# ${nbproject.path}
|
||||||
|
nbproject.manifest=manifest.mf
|
||||||
|
|
||||||
|
# path to the dist directory that the nbproject should use; since we do not use
|
||||||
|
# the netbeans' packaging mechanism, we have the flexibility to specify any
|
||||||
|
# distributives directory we want
|
||||||
|
nbproject.dist.dir=${cvs.dir}/${nbproject.path}/${nb.dist.path}
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# Native. Properties related to cleaning/building native components.
|
||||||
|
|
||||||
|
# path to the directory with the sources for the native components; relative
|
||||||
|
# to the root of the project's sources
|
||||||
|
native.path=${cvs.module}/${cvs.path}/native
|
||||||
|
|
||||||
|
# path to the directory with the localized files for the native components;
|
||||||
|
# relative to the root of the project's localized files directory
|
||||||
|
translatedfiles.native.path=${translatedfiles.module}/${translatedfiles.path}/native
|
||||||
|
|
||||||
|
# list of platforms for which the native components should be built
|
||||||
|
# * the list should be space-separated
|
||||||
|
native.platforms=windows linux solaris-x86 solaris-sparc macosx
|
||||||
|
|
||||||
|
# directory on the remote machine where the build script should operate
|
||||||
|
# * this is the default value, the actual value is expected to be passed in
|
||||||
|
# through the environment properties
|
||||||
|
remote.work.dir=~/.nbi-build
|
||||||
|
|
||||||
|
# ssh properties: executable name, set of arguments and the command.
|
||||||
|
# * ${remote.host}, ${remote.port} and ${remote.user} are environment specific
|
||||||
|
# and are expected to be passed in through the environment properties
|
||||||
|
ssh.executable=ssh
|
||||||
|
ssh.arguments=-l ${remote.user} -p ${remote.port} ${remote.host}
|
||||||
|
ssh.command.clean=rm -rf ${remote.work.dir};
|
||||||
|
ssh.command.build=rm -rf ${remote.work.dir}; \
|
||||||
|
mkdir ${remote.work.dir}; \
|
||||||
|
cd ${remote.work.dir}; \
|
||||||
|
if [ "${cvs.branch}" = "" ]; then \
|
||||||
|
if [ "${cvs.timestamp}" = "" ]; then \
|
||||||
|
cvs -d ${cvs.root} co -P ${native.path}; \
|
||||||
|
cvs -d ${cvs.root} co -P ${translatedfiles.native.path}; \
|
||||||
|
else\
|
||||||
|
cvs -D ${cvs.timestamp} -d ${cvs.root} co -P ${native.path}; \
|
||||||
|
cvs -D ${cvs.timestamp} -d ${cvs.root} co -P ${translatedfiles.native.path}; \
|
||||||
|
fi;\
|
||||||
|
else \
|
||||||
|
if [ "${cvs.timestamp}" = "" ]; then \
|
||||||
|
cvs -d ${cvs.root} co -r ${cvs.branch} -P ${native.path}; \
|
||||||
|
cvs -d ${cvs.root} co -r ${cvs.branch} -P ${translatedfiles.native.path}; \
|
||||||
|
else \
|
||||||
|
cvs -D ${cvs.timestamp} -d ${cvs.root} co -r ${cvs.branch} -P ${native.path}; \
|
||||||
|
cvs -D ${cvs.timestamp} -d ${cvs.root} co -r ${cvs.branch} -P ${translatedfiles.native.path}; \
|
||||||
|
fi;\
|
||||||
|
fi; \
|
||||||
|
cp -r ${translatedfiles.native.path} ${native.path}; \
|
||||||
|
cd ${native.path}/${platform}; \
|
||||||
|
make
|
||||||
|
|
||||||
|
# scp properties: executable name, set of arguments, remote directory, local
|
||||||
|
# directory
|
||||||
|
# * ${remote.host}, ${remote.port} and ${remote.user} are platform and
|
||||||
|
# environment specific and are expected to be passed in through the
|
||||||
|
# environment properties
|
||||||
|
# * name of the file to copy is platform specific and is defined elsewhere,
|
||||||
|
# most likely in the base build script for a project type (engine, product,
|
||||||
|
# etc.)
|
||||||
|
# * ${platform} will be defined at runtime, as these commands will be executed
|
||||||
|
# in loop over the list of platforms
|
||||||
|
scp.executable=scp
|
||||||
|
scp.arguments=-P ${remote.port}
|
||||||
|
scp.remote.dir=${remote.user}@${remote.host}:${remote.work.dir}/${native.path}/${platform}/${nb.dist.path}
|
||||||
|
scp.local.dir=${work.dir}/${native.path}/${platform}/${nb.dist.path}
|
||||||
|
|
||||||
|
# names of the native distributive files for various platforms
|
||||||
|
native.dist.file.windows=windows.dll
|
||||||
|
native.dist.file.linux=linux.so
|
||||||
|
native.dist.file.solaris-x86=solaris-x86.so
|
||||||
|
native.dist.file.solaris-sparc=solaris-sparc.so
|
||||||
|
native.dist.file.macosx=macosx.dylib
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# Release. Properties controlling the 'release' process
|
||||||
|
release.to.server=true
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# Miscellaneous. Properties that are used elsewhere.
|
||||||
|
|
||||||
|
# these properties control the environment for the jarsigner process
|
||||||
|
# * ${jarsigner.enabled} - whether to sign jars
|
||||||
|
# * ${jarsigner.xmx} - max heap size for the jarsigner process
|
||||||
|
# * ${jarsigner.executable} - path to jarsigner executable (optional)
|
||||||
|
jarsigner.enabled=true
|
||||||
|
jarsigner.xmx=1024m
|
||||||
|
|
||||||
|
# these properties control the environment for the pack200 and unpack200
|
||||||
|
# processes
|
||||||
|
# * ${pack200.enabled} - whether to repackage jars (can be specified in each product)
|
||||||
|
# * ${use.internal.packer} - whether to use the same JVM for packing jars (can be specified in each product)
|
||||||
|
# it is risky because of memory leaks and possible OOMs
|
||||||
|
# * ${use.internal.unpacker} - whether to use the same JVM for unpacking jars (can be specified in each product)
|
||||||
|
# it is risky because of memory leaks and possible OOMs
|
||||||
|
# * ${pack200.xmx} - -Xmx jvm argument value
|
||||||
|
# * ${pack200.perm.size} - -XX:PermSize jvm argument value
|
||||||
|
# * ${pack200.max.perm.size} - -XX:MaxPermSize jvm argument value
|
||||||
|
# * ${pack200.executable} - path to pack200 executable (optional)
|
||||||
|
# * ${unpack200.executable} - path to unpack200 executable (optional)
|
||||||
|
# * ${verification.java.executable} - path to java executable that would be used for verification of packaged jars (optional)
|
||||||
|
pack200.xmx=768m
|
||||||
|
pack200.perm.size=32m
|
||||||
|
pack200.max.perm.size=512m
|
||||||
|
|
||||||
|
# these properties control the environment for the external processes running during the build
|
||||||
|
# * ${process.max.execution.time} - maximum time (in milliseconds) for running the process
|
||||||
|
# if set to zero then processes would run without timeout
|
||||||
|
# default value is 600000=10min (defined in nbi/infra/build/.ant-lib/src/org/netbeans/installer/infra/build/ant/utils/Utils.java)
|
||||||
|
|
||||||
|
# these properties control native executable paths
|
||||||
|
# * ${tar.executable} - path to native tar/gtar/gnutar executable
|
||||||
|
# * ${ls.executable} - path to native ls executable
|
||||||
|
# * ${unzip.executable} - path to native unzip executable
|
834
sdk/nbi/.common/common.xml
Normal file
@ -0,0 +1,834 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is a target library which is intended to be used by other build scripts.
|
||||||
|
|
||||||
|
It contains the standard, fucntionality, common across all scripts which
|
||||||
|
allows to perform some basic initialization, check out sources from a cvs
|
||||||
|
repository and, finally, clean or build a netbeans project and jni libraries.
|
||||||
|
|
||||||
|
None ot the targets defined in this script are intended to be called
|
||||||
|
directly, instead it is expected that targets in build dcripts which import
|
||||||
|
this one will declare dependecies on this script's targets.
|
||||||
|
|
||||||
|
@author Kirill Sorokin
|
||||||
|
-->
|
||||||
|
<project name="common" default="usage" basedir=".">
|
||||||
|
<!-- ============================================================================
|
||||||
|
Aggregates
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the project.
|
||||||
|
|
||||||
|
This is an aggregation target, which does not contain any functionality,
|
||||||
|
but defines a dependency on the 'clean' target.
|
||||||
|
For more details, please consult the documentation for this target.
|
||||||
|
-->
|
||||||
|
<target name="clean-all" depends="clean"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans and builds the project.
|
||||||
|
|
||||||
|
This is an aggregation target, which does not contain any functionality,
|
||||||
|
but defines dependencies on the 'clean-all', 'checkout' and 'build'
|
||||||
|
targets. For more details, please consult the documentation for these
|
||||||
|
targets.
|
||||||
|
-->
|
||||||
|
<target name="build-all" depends="clean-all,checkout,build"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans, builds and releases the project.
|
||||||
|
|
||||||
|
This is an aggregation target, which does not contain any functionality,
|
||||||
|
but defines dependencies on the 'clean', 'checkout', 'build' and
|
||||||
|
'release' targets. For more details, please consult the documentation
|
||||||
|
for these targets.
|
||||||
|
-->
|
||||||
|
<target name="release-all" depends="build-all,release"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Initialization
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Initializes the projects's build script.
|
||||||
|
|
||||||
|
This is an aggregation target, it does not contain any functionality, but
|
||||||
|
defines dependencies on '-pre-init', '-init' and '-post-init'
|
||||||
|
targets. The '-pre-init' and '-post-init' targets are empty hooks,
|
||||||
|
which allow derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to the initialization process or after it. The '-init'
|
||||||
|
target contains the code which actually initializes the script and should
|
||||||
|
be overriden in the derivative scripts.
|
||||||
|
-->
|
||||||
|
<target name="init" depends="-pre-init,-init,-post-init"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Performs the default initialization.
|
||||||
|
|
||||||
|
This target defines a set of custom ant tasks which are used throughout
|
||||||
|
the script and may be useful for the derivative scripts.
|
||||||
|
|
||||||
|
It also sets some properties which control the flow of the build process,
|
||||||
|
such as whether to check-out sources from trunk or branch, or to copy
|
||||||
|
them from a given location; whether to build the native components or
|
||||||
|
not, whether to build the netbeans project or not.
|
||||||
|
|
||||||
|
Finally this target initializes the local working directory and the
|
||||||
|
distributives directory and sets a special property which will prevent it
|
||||||
|
from repeated execution.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".init" depends=".build-custom-tasks" unless="skip.initialization">
|
||||||
|
<!-- define custom ant tasks -->
|
||||||
|
<taskdef
|
||||||
|
name="for-each"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.ForEach"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="set"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.SetProperty"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="if"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.If"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
|
||||||
|
<!-- decide whether to checkout sources from trunk -->
|
||||||
|
<condition property="do.checkout">
|
||||||
|
<and>
|
||||||
|
<equals arg1="${checkout.sources}" arg2="true"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- decide whether to copy sources from a given location -->
|
||||||
|
<condition property="do.checkout.copy">
|
||||||
|
<not>
|
||||||
|
<equals arg1="${checkout.sources}" arg2="true"/>
|
||||||
|
</not>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- decide whether to build native libraries/launchers or not -->
|
||||||
|
<condition property="do.build.native">
|
||||||
|
<equals arg1="${build.native}" arg2="true"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- decide whether there is need to build a netbeans project -->
|
||||||
|
<condition property="do.build.nbproject">
|
||||||
|
<equals arg1="${build.nbproject}" arg2="true"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- deduce the path to the ant executable -->
|
||||||
|
<condition property="ant.executable" value="${ant.home}/bin/ant.bat">
|
||||||
|
<os family="windows"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="ant.executable" value="${ant.home}/bin/ant">
|
||||||
|
<not>
|
||||||
|
<os family="windows"/>
|
||||||
|
</not>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- initialize the local working directory -->
|
||||||
|
<mkdir dir="${work.dir}"/>
|
||||||
|
|
||||||
|
<!-- initialize the local distributive directory -->
|
||||||
|
<mkdir dir="${dist.dir}"/>
|
||||||
|
|
||||||
|
<!-- set the marker property which will prevent the script running the
|
||||||
|
initialization procedure again, if history is lost, e.g. as a
|
||||||
|
result of an antcall -->
|
||||||
|
<property name="skip.initialization" value="true"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds custom ant tasks.
|
||||||
|
|
||||||
|
This target deletes the directory which is the target for the custom ant
|
||||||
|
tasks compilation, recreates it and runs javac on the custom tasks'
|
||||||
|
sources.
|
||||||
|
|
||||||
|
It also sets a special property which will prevent it from repeated
|
||||||
|
execution.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-custom-tasks" unless="dont.build.custom.tasks">
|
||||||
|
<!-- quick clean-up and initialization -->
|
||||||
|
<delete dir="${custom.tasks.cls}"/>
|
||||||
|
<mkdir dir="${custom.tasks.cls}"/>
|
||||||
|
|
||||||
|
<!-- compile -->
|
||||||
|
<javac
|
||||||
|
srcdir="${custom.tasks.src}"
|
||||||
|
destdir="${custom.tasks.cls}"
|
||||||
|
debug="true"/>
|
||||||
|
|
||||||
|
<property name="dont.build.custom.tasks" value="true"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to the script's initialization.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-pre-init"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It must be overriden in derivative scripts, in order to implement custom
|
||||||
|
functionality required for the build script initialization.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-init" depends=".init"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed after the script's initialization.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-post-init"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Clean-up
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the current working directory and the distributives directory.
|
||||||
|
|
||||||
|
This is an aggregation target, it does not contain any functionality, but
|
||||||
|
defines dependencies on '-pre-clean', '-clean' and '-post-clean'
|
||||||
|
targets. The '-pre-clean' and '-post-clean' targets are empty hooks,
|
||||||
|
which allow derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to the clean process or after it. The '-clean' target
|
||||||
|
contains the code which actually cleans the project and should be
|
||||||
|
overriden in the derivative scripts.
|
||||||
|
-->
|
||||||
|
<target name="clean" depends="init,-pre-clean,-clean,-post-clean"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Performs the standard clean-up procedures.
|
||||||
|
|
||||||
|
It cleans the native components (iterates over the list of platforms for
|
||||||
|
which the native components should be built and deletes the distributive
|
||||||
|
files of these components), tries to run cleanup on the netbeans project
|
||||||
|
and finally deletes the local working directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".clean">
|
||||||
|
<!-- for each of the defined platforms set the appropriate property
|
||||||
|
and execute the clean-up procedure -->
|
||||||
|
<for-each list="${native.platforms}" property="platform">
|
||||||
|
<antcall target=".clean-native"/>
|
||||||
|
</for-each>
|
||||||
|
|
||||||
|
<!-- attempt to run the clean-up procedure on the netbeans project -->
|
||||||
|
<antcall target=".clean-nbproject"/>
|
||||||
|
|
||||||
|
<!-- delete the local working directory -->
|
||||||
|
<delete dir="${work.dir}" includeemptydirs="true"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the native components of the project.
|
||||||
|
|
||||||
|
It is meant to be antcall'ed from a loop which would iterate over the
|
||||||
|
list of supported platforms. This target expects the property
|
||||||
|
'platform' to point to the current platform for which clean-up should be
|
||||||
|
performed.
|
||||||
|
|
||||||
|
By default it falls back to '.clean-jni' target, but it is meant to be
|
||||||
|
overriden by derivative build scripts, if there is need to do more than
|
||||||
|
that.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".clean-native" if="do.build.native">
|
||||||
|
<antcall target=".clean-jni"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans up the native jni libraries for the project.
|
||||||
|
|
||||||
|
It removes the distributive file for the jni library for the current
|
||||||
|
platform.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".clean-jni" if="do.build.native">
|
||||||
|
<!-- set required properties -->
|
||||||
|
<set property="current.scp.local.dir"
|
||||||
|
source="scp.local.dir"/>
|
||||||
|
<set property="current.native.dist.file"
|
||||||
|
source="native.dist.file.${platform}"/>
|
||||||
|
|
||||||
|
<!-- delete the distributive -->
|
||||||
|
<delete dir="${scp.local.dir}/${current.native.dist.file}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans up the netbeans part of the project.
|
||||||
|
|
||||||
|
It runs the 'clean' target on the netbeans project's build script.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.nbproject} property was
|
||||||
|
set to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".clean-nbproject" if="do.build.nbproject">
|
||||||
|
<!-- check whether the netbeans project's directory exists -->
|
||||||
|
<condition property="nbproject.exists" value="true">
|
||||||
|
<available file="${cvs.dir}/${nbproject.path}"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- is it exists, run the 'clean' target on the netbeans project's
|
||||||
|
build script -->
|
||||||
|
<if property="nbproject.exists" value="true">
|
||||||
|
<condition property="nb.jdk.home"
|
||||||
|
value="${nb.platform.home}"
|
||||||
|
else="${nb.platform.home.macos}">
|
||||||
|
<not>
|
||||||
|
<equals arg1="Apple Inc." arg2="${java.vendor}"/>
|
||||||
|
</not>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<exec executable="${ant.executable}"
|
||||||
|
dir="${cvs.dir}/${nbproject.path}"
|
||||||
|
failonerror="false"
|
||||||
|
failifexecutionfails="false">
|
||||||
|
<env key="JAVA_HOME" value="${java.home}"/>
|
||||||
|
<arg value="${nb.target.clean}"/>
|
||||||
|
|
||||||
|
<arg value="${nb.jdk.home}"/>
|
||||||
|
<arg value="${nb.ignore.native}"/>
|
||||||
|
<arg value="${nb.no.dependencies}"/>
|
||||||
|
<arg value="${nb.dont.build.custom.tasks}"/>
|
||||||
|
<arg value="${nb.custom.tasks.cls}"/>
|
||||||
|
<arg value="${nb.custom.parameter}"/>
|
||||||
|
</exec>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to cleaning the projects's local working directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-pre-clean"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It must be overriden in derivative scripts, in order to implement custom
|
||||||
|
functionality required for the cleaning the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-clean" depends=".clean"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed after cleaning the project's local working directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-post-clean"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Check-out
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Checks out the the project's sources from the CVS repository.
|
||||||
|
|
||||||
|
This is an aggregation target, it does not contain any functionality, but
|
||||||
|
defines dependencies on '-pre-checkout', '-checkout' and '-post-checkout'
|
||||||
|
targets. The '-pre-checkout' and '-post-checkout' target are empty hooks,
|
||||||
|
which allow derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to the check-out process or after it. The '-checkout'
|
||||||
|
target contains the code which actually checks out the sources and should
|
||||||
|
be overriden in the derivative scripts.
|
||||||
|
-->
|
||||||
|
<target name="checkout"
|
||||||
|
depends="init,-pre-checkout,-checkout,-post-checkout"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Checks out sources from a CVS repository with the given coordinates.
|
||||||
|
|
||||||
|
This target uses the values of ${cvs.root}, ${cvs.module}, ${cvs.path},
|
||||||
|
${cvs.branch}, ${cvs.timestamp} properties to check out the required sources.
|
||||||
|
It falls back to the two targets: '.checkout-repository' and '.checkout-copy',
|
||||||
|
which correspond to the choosen check-out method. Only one of these
|
||||||
|
targets will be executed under any conditions.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".checkout"
|
||||||
|
depends=".checkout-repository,.pre-checkout-copy,.checkout-copy,.post-checkout-copy">
|
||||||
|
<copy todir="${cvs.dir}" failonerror="false">
|
||||||
|
<fileset dir="${translatedfiles.dir}"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<!-- substitute the params in the source tree -->
|
||||||
|
<for-each from="1" to="${sources.params.length}" property="i">
|
||||||
|
<set property="current.token"
|
||||||
|
source="sources.params.${i}.token"/>
|
||||||
|
<set property="current.value"
|
||||||
|
source="sources.params.${i}.value"/>
|
||||||
|
|
||||||
|
<replace dir="${cvs.dir}"
|
||||||
|
token="${current.token}"
|
||||||
|
value="${current.value}"/>
|
||||||
|
</for-each>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Checks out sources from trunk or from a given branch.
|
||||||
|
|
||||||
|
This target executes the <cvs> task, which performs the actual check-out.
|
||||||
|
|
||||||
|
This target is only executed if the the ${checkout.sources} property was
|
||||||
|
set to 'true' and the ${cvs.branch} property is not empty.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".checkout-repository" if="do.checkout">
|
||||||
|
<cvs cvsroot="${cvs.root}"
|
||||||
|
command="checkout"
|
||||||
|
package="${cvs.module}/${cvs.path}"
|
||||||
|
tag="${cvs.branch}"
|
||||||
|
date="${cvs.timestamp}"
|
||||||
|
dest="${work.dir}"
|
||||||
|
failonerror="true"/>
|
||||||
|
<cvs cvsroot="${cvs.root}"
|
||||||
|
command="checkout"
|
||||||
|
package="${translatedfiles.module}/${translatedfiles.path}"
|
||||||
|
tag="${cvs.branch}"
|
||||||
|
date="${cvs.timestamp}"
|
||||||
|
dest="${work.dir}"
|
||||||
|
failonerror="false"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Copies the sources from a given location.
|
||||||
|
|
||||||
|
This target serves as an alternative to the actual check-out targets and
|
||||||
|
is used in case when the calling script already knows the location of the
|
||||||
|
appropriate source files and there is no need to check them out again.
|
||||||
|
|
||||||
|
Several filters are applied to the sources files, e.g. no already built
|
||||||
|
files are copied, the private parts of the netbeans projects are omitted,
|
||||||
|
CVS metadata is also omitted.
|
||||||
|
|
||||||
|
This target is only executed if the the ${checkout.sources} property was
|
||||||
|
set to 'false'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".checkout-copy" if="do.checkout.copy">
|
||||||
|
<!-- create the destination directory for the sources -->
|
||||||
|
<mkdir dir="${work.dir}/${cvs.module}/${cvs.path}"/>
|
||||||
|
|
||||||
|
<!-- copy the sources, applying the selected filters -->
|
||||||
|
<copy todir="${work.dir}/${cvs.module}/${cvs.path}" verbose="true">
|
||||||
|
<fileset dir="${sources.dir}/${cvs.module}/${cvs.path}">
|
||||||
|
<include name="**/*.*"/>
|
||||||
|
<exclude name="**/nbproject/private/*.*"/>
|
||||||
|
<exclude name="build/**/*.*"/>
|
||||||
|
<exclude name="dist/**/*.*"/>
|
||||||
|
<exclude name="**/CVS"/>
|
||||||
|
<exclude name="**/.cvsignore"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
<!-- copy the translatedfiles for the sources, applying the selected filters -->
|
||||||
|
<copy todir="${translatedfiles.dir}" verbose="true" failonerror="false">
|
||||||
|
<fileset dir="${sources.dir}/${translatedfiles.module}/${translatedfiles.path}">
|
||||||
|
<include name="**/*.*"/>
|
||||||
|
<exclude name="**/nbproject/private/*.*"/>
|
||||||
|
<exclude name="build/**/*.*"/>
|
||||||
|
<exclude name="dist/**/*.*"/>
|
||||||
|
<exclude name="**/CVS"/>
|
||||||
|
<exclude name="**/.cvsignore"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Empty hooks.
|
||||||
|
|
||||||
|
They allow derivative scripts to inject custom logic which will be
|
||||||
|
executed prior and after copying out the project's sources.
|
||||||
|
|
||||||
|
These targets are not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".pre-checkout-copy"/>
|
||||||
|
<target name=".post-checkout-copy"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to checking out the project's sources.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-pre-checkout"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It must be overriden in derivative scripts, in order to implement custom
|
||||||
|
functionality required for the correctly checking out the project's
|
||||||
|
sources.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-checkout" depends=".checkout"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed after checking out the project's sources.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-post-checkout"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Build
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the project and (optionally) its native components.
|
||||||
|
|
||||||
|
It is assumed that the sources of the project are already checked out,
|
||||||
|
but a dependency on the 'checkout' target is not defined as it may be
|
||||||
|
desirable to check-out the sources once and then rebuild the engine as
|
||||||
|
appropriate.
|
||||||
|
|
||||||
|
The build process consists of two steps: first, the native components
|
||||||
|
of the project (jni libraries) are built (if it is required), then the
|
||||||
|
projects's netbeans part is compiled and packaged.
|
||||||
|
|
||||||
|
This is an aggregation target, it does not contain any functionality, but
|
||||||
|
defines dependencies on '-pre-build', '-build' and '-post-build'
|
||||||
|
targets. The '-pre-build' and '-post-build' target are empty hooks,
|
||||||
|
which allow derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to the build process or after it. The '-build' target
|
||||||
|
contains the code which actually builds the project and should be
|
||||||
|
overriden in the derivative scripts.
|
||||||
|
-->
|
||||||
|
<target name="build" depends="init,-pre-build,-build,-post-build"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Performs the standard build procedures.
|
||||||
|
|
||||||
|
This target builds the native components for the project (iterates over
|
||||||
|
the list of platforms, calling the '.build-native' target) and executes
|
||||||
|
the 'build' target on the netbeans part of the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build">
|
||||||
|
<!-- for each of the defined platforms set the appropriate property
|
||||||
|
and execute the build procedure -->
|
||||||
|
<for-each list="${native.platforms}" property="platform">
|
||||||
|
<antcall target=".build-native"/>
|
||||||
|
</for-each>
|
||||||
|
|
||||||
|
<!-- run the 'build' target on the netbeans project -->
|
||||||
|
<antcall target=".build-nbproject"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the native components of the project for a given platform.
|
||||||
|
|
||||||
|
By default this target falls back to the '.build-jni' target, which
|
||||||
|
builds the jni libraries for the project.
|
||||||
|
|
||||||
|
This target is called in a loop from the '.build-native' target, and
|
||||||
|
expects the ${platform} property to contain the code mane of the platform
|
||||||
|
for which the native components should be built.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-native" if="do.build.native">
|
||||||
|
<antcall target=".build-jni"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the jni library for the given platform.
|
||||||
|
|
||||||
|
This target is antcall'ed as part of the call to the '.build-native'
|
||||||
|
target, and expects the ${platform} property to contain the code name of
|
||||||
|
the platform for which the library should be built.
|
||||||
|
|
||||||
|
It connects to the registered satellite machine for the current platform
|
||||||
|
using the 'ssh' utility, checks out the library's sources and builds it.
|
||||||
|
The built binary is then copied back to the host machine using 'scp'.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-jni" if="do.build.native">
|
||||||
|
<!-- set required properties -->
|
||||||
|
<set property="remote.host"
|
||||||
|
source="remote.host.${platform}"/>
|
||||||
|
<set property="remote.port"
|
||||||
|
source="remote.port.${platform}"/>
|
||||||
|
<set property="remote.user"
|
||||||
|
source="remote.user.${platform}"/>
|
||||||
|
|
||||||
|
<set property="current.native.dist.file"
|
||||||
|
source="native.dist.file.${platform}"/>
|
||||||
|
|
||||||
|
<!-- now we need to re-evaluate the values of the ssh and scp-related
|
||||||
|
properties as they contain references to the properties that have
|
||||||
|
just been set above -->
|
||||||
|
<set property="current.ssh.arguments"
|
||||||
|
source="ssh.arguments"/>
|
||||||
|
<set property="current.ssh.command.clean"
|
||||||
|
source="ssh.command.clean"/>
|
||||||
|
<set property="current.ssh.command.build"
|
||||||
|
source="ssh.command.build"/>
|
||||||
|
|
||||||
|
<set property="current.scp.arguments"
|
||||||
|
source="scp.arguments"/>
|
||||||
|
<set property="current.scp.remote.dir"
|
||||||
|
source="scp.remote.dir"/>
|
||||||
|
<set property="current.scp.local.dir"
|
||||||
|
source="scp.local.dir"/>
|
||||||
|
|
||||||
|
<!-- run the ssh command - it is expected that it will build
|
||||||
|
everything -->
|
||||||
|
<exec executable="${ssh.executable}" failonerror="true">
|
||||||
|
<arg line="${current.ssh.arguments}"/>
|
||||||
|
<arg value="${current.ssh.command.build}"/>
|
||||||
|
</exec>
|
||||||
|
|
||||||
|
<!-- run the scp command to copy the resulting file back to the
|
||||||
|
host system -->
|
||||||
|
<mkdir dir="${current.scp.local.dir}"/>
|
||||||
|
<exec executable="${scp.executable}" failonerror="true">
|
||||||
|
<arg line="${current.scp.arguments}"/>
|
||||||
|
<arg value="${current.scp.remote.dir}/${current.native.dist.file}"/>
|
||||||
|
<arg value="${current.scp.local.dir}/${current.native.dist.file}"/>
|
||||||
|
</exec>
|
||||||
|
|
||||||
|
<!-- run the ssh command - we need to clean after us -->
|
||||||
|
<exec executable="${ssh.executable}" failonerror="true">
|
||||||
|
<arg line="${current.ssh.arguments}"/>
|
||||||
|
<arg value="${current.ssh.command.clean}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the netbeans part of the project.
|
||||||
|
|
||||||
|
It runs the 'jar' target on the netbeans project's build script.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.nbproject} property was
|
||||||
|
set to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-nbproject" if="do.build.nbproject">
|
||||||
|
<condition property="nb.jdk.home"
|
||||||
|
value="${nb.platform.home}"
|
||||||
|
else="${nb.platform.home.macos}">
|
||||||
|
<not>
|
||||||
|
<equals arg1="Apple Inc." arg2="${java.vendor}"/>
|
||||||
|
</not>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<exec executable="${ant.executable}"
|
||||||
|
dir="${cvs.dir}/${nbproject.path}"
|
||||||
|
failonerror="true"
|
||||||
|
failifexecutionfails="true"
|
||||||
|
errorproperty="error.property">
|
||||||
|
<env key="JAVA_HOME" value="${java.home}"/>
|
||||||
|
<arg value="clean"/>
|
||||||
|
<arg value="compile"/>
|
||||||
|
|
||||||
|
<arg value="${nb.jdk.home}"/>
|
||||||
|
<arg value="${nb.ignore.native}"/>
|
||||||
|
<arg value="${nb.no.dependencies}"/>
|
||||||
|
<arg value="${nb.dont.build.custom.tasks}"/>
|
||||||
|
<arg value="${nb.custom.tasks.cls}"/>
|
||||||
|
<arg value="${nb.custom.parameter}"/>
|
||||||
|
</exec>
|
||||||
|
|
||||||
|
<mkdir dir="${nbproject.dist.dir}"/>
|
||||||
|
|
||||||
|
<jar manifest="${cvs.dir}/${nbproject.path}/${nbproject.manifest}"
|
||||||
|
destfile="${nbproject.dist.dir}/${nbproject.dist.file.name}">
|
||||||
|
<fileset dir="${cvs.dir}/${nbproject.path}/build/classes">
|
||||||
|
<include name="**/*.*"/>
|
||||||
|
</fileset>
|
||||||
|
</jar>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to building the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-pre-build"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It must be overriden in derivative scripts, in order to implement custom
|
||||||
|
functionality required for the correctly building the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-build" depends=".build"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed after building the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-post-build"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Release
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Releases the project to the registries server.
|
||||||
|
|
||||||
|
It is assumed that the project has already been built, but a dependency
|
||||||
|
on the 'build' target is not defined, as it may be desirable to build
|
||||||
|
once and then release several times to different registries servers.
|
||||||
|
|
||||||
|
This is an aggregation target, it does not contain any functionality, but
|
||||||
|
defines dependencies on '-pre-release', '-release' and '-post-release'
|
||||||
|
targets. The '-pre-release' and '-post-release' target are empty hooks,
|
||||||
|
which allow derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to the release process or after it. The '-release' target
|
||||||
|
contains the code which actually releases the project and should be
|
||||||
|
overriden in the derivative scripts.
|
||||||
|
-->
|
||||||
|
<target name="release" depends="init,-pre-release,-release,-post-release"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed prior to releasing the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-pre-release"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It must be overriden in derivative scripts, in order to implement custom
|
||||||
|
functionality required for the correctly releasing the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-release"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to inject custom logic which will be
|
||||||
|
executed after releasing the project.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-post-release"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Default
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The default target.
|
||||||
|
|
||||||
|
Does nothing except printing the usage information.
|
||||||
|
-->
|
||||||
|
<target name="usage">
|
||||||
|
<echo>
|
||||||
|
This build script is a targets library and must not be used
|
||||||
|
directly.
|
||||||
|
</echo>
|
||||||
|
</target>
|
||||||
|
</project>
|
70
sdk/nbi/.common/engine.properties
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
# whether to build native components or not; 'true'/'false'
|
||||||
|
# * the engine has a bunch of native code dependencies, thus it is feasible to
|
||||||
|
# rebuild them every time
|
||||||
|
build.native=true
|
||||||
|
|
||||||
|
# whether to build the netbeans part of the project or not; 'true'/'false'
|
||||||
|
# * essentially the engine IS a netbeans project, thus we should always build
|
||||||
|
# it
|
||||||
|
build.nbproject=true
|
||||||
|
|
||||||
|
# dummy value for the custom parameter; which will be passed to the netbeans
|
||||||
|
# project build script; more sensible value is present in the base product
|
||||||
|
# build script
|
||||||
|
nb.custom.parameter=-Dtrue=true
|
||||||
|
|
||||||
|
# name of the distributive file for the netbeans project
|
||||||
|
# * ${engine.dist.file.name} is expected to be defined in the derivative
|
||||||
|
# instance build script
|
||||||
|
nbproject.dist.file.name=${engine.dist.file.name}
|
||||||
|
|
||||||
|
# path to the engine's distributive file; the file at this path would be
|
||||||
|
# considered the result of the build script and be copied to the distributives
|
||||||
|
# directory
|
||||||
|
nbproject.dist.file=${nbproject.dist.dir}/${nbproject.dist.file.name}
|
||||||
|
|
||||||
|
# names of the distributive files for the native jni libraries for the engine
|
||||||
|
native.dist.file.windows=windows.dll
|
||||||
|
native.dist.file.linux=linux.so
|
||||||
|
native.dist.file.solaris-x86=solaris-x86.so
|
||||||
|
native.dist.file.solaris-sparc=solaris-sparc.so
|
||||||
|
native.dist.file.macosx=macosx.dylib
|
324
sdk/nbi/.common/engine.xml
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is the base build script for nbi engine.
|
||||||
|
|
||||||
|
It is not intended to be used directly, but to be imported into derivative
|
||||||
|
implementaion scripts, which will provide properties' values that are
|
||||||
|
specific the concrete engine implementation. The derivative scripts may also
|
||||||
|
provide some additional functionality that is required by their respective
|
||||||
|
engine implementations.
|
||||||
|
|
||||||
|
This script exposes five primary targets: 'init', 'clean', 'checkout',
|
||||||
|
'build' and 'release'; as well as two aggregate targets: 'build-all',
|
||||||
|
which tranlates into 'init', 'clean', 'checkout', 'build', and
|
||||||
|
'release-all' - 'init', 'clean', 'checkout', 'build', 'release'. For the
|
||||||
|
detailed description of the functionality of these targets, consult the
|
||||||
|
corresponsing documentation.
|
||||||
|
-->
|
||||||
|
<project name="engine" default="usage" basedir=".">
|
||||||
|
<!-- a default value for the ${common.dir} property, which allows the user
|
||||||
|
to see the usage information is he calls this script directly and not
|
||||||
|
via a derivative (which is the proper way to do this) -->
|
||||||
|
<property name="common.dir" value="${basedir}"/>
|
||||||
|
|
||||||
|
<!-- import the common properties -->
|
||||||
|
<property file="${common.dir}/common.properties"/>
|
||||||
|
|
||||||
|
<!-- import properties specific to the engine's build script -->
|
||||||
|
<property file="${common.dir}/engine.properties"/>
|
||||||
|
|
||||||
|
<!-- import the common target library -->
|
||||||
|
<import file="common.xml" optional="false"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Initialization
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Initializes the engine's build script.
|
||||||
|
|
||||||
|
This target overrides the '-init' target in common.xml, providing the
|
||||||
|
custom functionality that is required for the engine's build script
|
||||||
|
initialization.
|
||||||
|
|
||||||
|
In addition to the standard initialization routine, this target defines
|
||||||
|
several custom ant tasks, which are specific to the engine's build
|
||||||
|
script.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-init" depends=".init">
|
||||||
|
<!-- define custom ant tasks -->
|
||||||
|
<if property="release.to.server" value="true">
|
||||||
|
<taskdef
|
||||||
|
name="release-engine-server"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.ReleaseEngine"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if property="release.to.server" value="false">
|
||||||
|
<taskdef
|
||||||
|
name="release-engine-filesystem"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.registries.UpdateEngine"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Clean-up
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the current working directory and the distributives directory.
|
||||||
|
|
||||||
|
This target overrides the '-clean' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly cleaning the engine.
|
||||||
|
|
||||||
|
In addition to the standard behavior the engine distributive file is
|
||||||
|
removed from the distributives directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-clean" depends=".clean">
|
||||||
|
<!-- remove the engine's distributive file from the distributives
|
||||||
|
directory -->
|
||||||
|
<delete file="${dist.dir}/${engine.dist.file.name}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the native components of the engine.
|
||||||
|
|
||||||
|
This target overrides the '.clean-native' target defined in common.xml,
|
||||||
|
as the engine's native components slightly differ from the defaults.
|
||||||
|
Besides cleaning the jni libraries, the engine also needs to clean the
|
||||||
|
native launcher stubs.
|
||||||
|
|
||||||
|
This target is antcall'ed in a loop over the list of platforms from the
|
||||||
|
'.clean' target in common.xml.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".clean-native" if="do.build.native">
|
||||||
|
<antcall target=".clean-jni"/>
|
||||||
|
<antcall target=".clean-launcher"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the native launcher stub for the given platform.
|
||||||
|
|
||||||
|
This target is antcall'ed as part of the call to the '.clean-native'
|
||||||
|
target, and expects the ${platform} property to contain the code name of
|
||||||
|
the platform for which the launcher should be built.
|
||||||
|
|
||||||
|
It simply removes the current launcher stub.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".clean-launcher" if="do.build.native">
|
||||||
|
<!-- does nothing at the moment -->
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Check-out
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The functionality of the checkout procedure for the engine is indentical
|
||||||
|
to the standard one, thus there is not need to override the '-checkout'
|
||||||
|
target, whosew default implementation is present in common.xml.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Build
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the engine and (optionally) its native components.
|
||||||
|
|
||||||
|
This target overrides the '-build' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly building the engine.
|
||||||
|
|
||||||
|
The build process consists of three steps: first, the native components
|
||||||
|
of the engine (jni libraries and native launcher stubs) are built (if it
|
||||||
|
is required), then the engine's netbeans project is compiled and
|
||||||
|
packaged, last the engine jar file is digitally signed and copied to the
|
||||||
|
distributives directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-build" depends=".build">
|
||||||
|
<!-- copy the built binary to the distributives directory -->
|
||||||
|
<copy file="${nbproject.dist.file}" todir="${dist.dir}"/>
|
||||||
|
|
||||||
|
<!-- digitally sign the built binary -->
|
||||||
|
<if property="jarsigner.enabled" value="true">
|
||||||
|
<signjar jar="${dist.dir}/${engine.dist.file.name}"
|
||||||
|
keystore="${jarsigner.keystore}"
|
||||||
|
storepass="${jarsigner.storepass}"
|
||||||
|
alias="${jarsigner.alias}"
|
||||||
|
maxmemory="${jarsigner.xmx}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the native components of the engine.
|
||||||
|
|
||||||
|
This target overrides the '.build-native' target defined in common.xml,
|
||||||
|
as the engine's native components slightly differ from the defaults.
|
||||||
|
Besides building the jni libraries, the engine also needs to build the
|
||||||
|
native launcher stubs, which will later be used to create redistributable
|
||||||
|
bundles.
|
||||||
|
|
||||||
|
This target is antcall'ed in a loop over the list of platforms from the
|
||||||
|
'.build' target in common.xml.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-native" if="do.build.native">
|
||||||
|
<antcall target=".build-jni"/>
|
||||||
|
<antcall target=".build-launcher"/>
|
||||||
|
<antcall target=".build-cleaner"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the native launcher stub for the given platform.
|
||||||
|
|
||||||
|
This target is antcall'ed as part of the call to the '.build-native'
|
||||||
|
target, and expects the ${platform} property to contain the code name of
|
||||||
|
the platform for which the launcher should be built.
|
||||||
|
|
||||||
|
It connects to the registered satellite machine for the current platform
|
||||||
|
using the 'ssh' utility, checks out the launcher's sources and builds it.
|
||||||
|
The built binary is then copied back to the host machine using 'scp'.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-launcher" if="do.build.native">
|
||||||
|
<!-- does nothing at the moment -->
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the native cleaner for locked files for the given platform.
|
||||||
|
|
||||||
|
This target is antcall'ed as part of the call to the '.build-native'
|
||||||
|
target, and expects the ${platform} property to contain the code name of
|
||||||
|
the platform for which the launcher should be built.
|
||||||
|
|
||||||
|
It connects to the registered satellite machine for the current platform
|
||||||
|
using the 'ssh' utility, checks out the launcher's sources and builds it.
|
||||||
|
The built binary is then copied back to the host machine using 'scp'.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.native} property was set
|
||||||
|
to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name=".build-cleaner" if="do.build.native">
|
||||||
|
<!-- does nothing at the moment -->
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Release
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Releases the engine to the registries server.
|
||||||
|
|
||||||
|
This target overrides the '-release' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly releasing the engine.
|
||||||
|
|
||||||
|
It is assumed that the engine has already been built, but a dependency
|
||||||
|
on the 'build' target is not defined, as it may be desirable to build
|
||||||
|
once and then release several times to different registries servers.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-release">
|
||||||
|
<if property="release.to.server" value="true">
|
||||||
|
<echo message="Release URL is ${release.url}"/>
|
||||||
|
<echo message="Archive is ${dist.dir}/${engine.dist.file.name}"/>
|
||||||
|
|
||||||
|
<release-engine-server
|
||||||
|
url="${release.url}"
|
||||||
|
archive="${dist.dir}/${engine.dist.file.name}"/>
|
||||||
|
</if>
|
||||||
|
<if property="release.to.server" value="false">
|
||||||
|
<echo message="Registry root is ${release.registry.dir}"/>
|
||||||
|
<echo message="Archive is ${dist.dir}/${engine.dist.file.name}"/>
|
||||||
|
|
||||||
|
<release-engine-filesystem
|
||||||
|
root="${release.registry.dir}"
|
||||||
|
archive="${dist.dir}/${engine.dist.file.name}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Default
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The default target.
|
||||||
|
|
||||||
|
Does nothing except printing the usage information.
|
||||||
|
-->
|
||||||
|
<target name="usage">
|
||||||
|
<echo>
|
||||||
|
This is the base build script for nbi engine and is not intended to
|
||||||
|
be called directly. In order to create a derivative implementation
|
||||||
|
script, see
|
||||||
|
${basedir}/.templates/engine-template.xml
|
||||||
|
</echo>
|
||||||
|
</target>
|
||||||
|
</project>
|
69
sdk/nbi/.common/group.properties
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
# groups do not normally have any native components, thus there is no need to
|
||||||
|
# attempt to build anything native
|
||||||
|
build.native=false
|
||||||
|
|
||||||
|
# groups do not normally have any netbeans projects, thus there is no need to
|
||||||
|
# attempt to build any nbproject
|
||||||
|
build.nbproject=false
|
||||||
|
|
||||||
|
# various directories and file paths that will be used for packaging the
|
||||||
|
# group
|
||||||
|
package.dir=${work.dir}/package
|
||||||
|
|
||||||
|
package.descriptor.path=registry.xml
|
||||||
|
|
||||||
|
group.path=groups/${group.uid}
|
||||||
|
group.icon.path=${group.path}/icon.png
|
||||||
|
|
||||||
|
group.dist.file.name=${group.uid}.jar
|
||||||
|
|
||||||
|
# path to the group's icon; the contents of this file will be copied to the
|
||||||
|
# file identified by ${group.icon.file}
|
||||||
|
group.icon=${cvs.dir}/data/icon.png
|
||||||
|
|
||||||
|
# path to the group's localizing bundle; the bundle is expected to contain
|
||||||
|
# two properties: 'group.display.name' and 'group.description', which will be
|
||||||
|
# used in creating the registry entry for this group
|
||||||
|
group.bundle=${cvs.dir}/data/Bundle
|
||||||
|
|
||||||
|
# uri of the group's icon, which will appear in the registry
|
||||||
|
group.icon.uri=resource:${group.icon.path}
|
283
sdk/nbi/.common/group.xml
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is the base build script for an nbi group package.
|
||||||
|
|
||||||
|
It is not intended to be used directly, but to be imported into derivative
|
||||||
|
implementation scripts, which will provide properties' values that are
|
||||||
|
specific the concrete group implementation. The derivative scripts may also
|
||||||
|
provide some additional functionality that is required by their respective
|
||||||
|
group implementations.
|
||||||
|
|
||||||
|
This script exposes five primary targets: 'init', 'clean', 'checkout',
|
||||||
|
'build' and 'release'; as well as two aggregate targets: 'build-all',
|
||||||
|
which tranlates into 'init', 'clean', 'checkout', 'build', and
|
||||||
|
'release-all' - 'init', 'clean', 'checkout', 'build', 'release'. For the
|
||||||
|
detailed description of the functionality of these targets, consult the
|
||||||
|
corresponding documentation.
|
||||||
|
-->
|
||||||
|
<project name="group" default="usage" basedir=".">
|
||||||
|
<!-- a default value for the ${common.dir} property, which allows the user
|
||||||
|
to see the usage information is he calls this script directly and not
|
||||||
|
via a derivative (which is the proper way to do this) -->
|
||||||
|
<property name="common.dir" value="${basedir}"/>
|
||||||
|
|
||||||
|
<!-- import the common properties -->
|
||||||
|
<property file="${common.dir}/common.properties"/>
|
||||||
|
|
||||||
|
<!-- import properties specific to the group package's build script -->
|
||||||
|
<property file="${common.dir}/group.properties"/>
|
||||||
|
|
||||||
|
<!-- import the common target library -->
|
||||||
|
<import file="common.xml" optional="false"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Initialization
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Initializes the group package's build script.
|
||||||
|
|
||||||
|
This target overrides the '-init' target in common.xml, providing the
|
||||||
|
custom functionality that is required for the group package's build
|
||||||
|
script initialization.
|
||||||
|
|
||||||
|
In addition to the standard initialization routine, this target defines
|
||||||
|
several custom ant tasks, which are specific to the group package's build
|
||||||
|
script.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-init" depends=".init">
|
||||||
|
<!-- define custom ant tasks -->
|
||||||
|
<taskdef
|
||||||
|
name="sizeof"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.SizeOf"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="md5"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.Md5"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="load-locales"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.LoadLocales"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="group-descriptor"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.GroupDescriptor"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
|
||||||
|
<if property="release.to.server" value="true">
|
||||||
|
<taskdef
|
||||||
|
name="release-package-server"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.ReleasePackage"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if property="release.to.server" value="false">
|
||||||
|
<taskdef
|
||||||
|
name="release-package-filesystem"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.registries.AddPackage"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Clean-up
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the current working directory and the distributives directory.
|
||||||
|
|
||||||
|
This target overrides the '-clean' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly cleaning the group
|
||||||
|
package.
|
||||||
|
|
||||||
|
In addition to the standard behavior the group package distributive file
|
||||||
|
is removed from the distributives directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-clean" depends=".clean">
|
||||||
|
<!-- remove the group's distributive file from the distributives
|
||||||
|
directory -->
|
||||||
|
<delete file="${dist.dir}/${group.dist.file.name}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Check-out
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The functionality of the checkout procedure for the group package is
|
||||||
|
indentical to the standard one, thus there is not need to override the
|
||||||
|
'-checkout' target, whosew default implementation is present in
|
||||||
|
common.xml.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Build
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the group package.
|
||||||
|
|
||||||
|
This target overrides the '-build' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly building the group
|
||||||
|
package.
|
||||||
|
|
||||||
|
The build process for the grup package consists of four steps.
|
||||||
|
1) The group's icon is copied from its location to the group's package
|
||||||
|
directory structure and some metadata is calculated
|
||||||
|
|
||||||
|
2) The group's localizing bundle is loaded and the group package
|
||||||
|
descriptor is generated
|
||||||
|
|
||||||
|
3) The manifest for the group package is generated
|
||||||
|
|
||||||
|
4) The package directory structure is jarred, digitally signed and moved
|
||||||
|
to the distributives directory
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-build" depends=".build">
|
||||||
|
<!-- copy the group's icon to the soon-to-be package directory
|
||||||
|
structure and calculate some metadata for it -->
|
||||||
|
<copy file="${group.icon}"
|
||||||
|
tofile="${package.dir}/${group.icon.path}"/>
|
||||||
|
<sizeof file="${package.dir}/${group.icon.path}"
|
||||||
|
property="group.icon.size"/>
|
||||||
|
<md5 file="${package.dir}/${group.icon.path}"
|
||||||
|
property="group.icon.md5"/>
|
||||||
|
<set
|
||||||
|
property="group.icon.correct.uri"
|
||||||
|
value="${group.icon.uri}"/>
|
||||||
|
|
||||||
|
<!-- load the group's localizing bundle and store the locales list to
|
||||||
|
${group.locales.list} -->
|
||||||
|
<load-locales basename="${group.bundle}" list="group.locales.list"/>
|
||||||
|
|
||||||
|
<!-- generate the group package descriptor -->
|
||||||
|
<group-descriptor file="${package.dir}/${package.descriptor.path}"/>
|
||||||
|
|
||||||
|
<!-- create the package jar file and sign it -->
|
||||||
|
<jar basedir="${package.dir}"
|
||||||
|
destfile="${work.dir}/${group.dist.file.name}"
|
||||||
|
compress="true">
|
||||||
|
<manifest>
|
||||||
|
<attribute
|
||||||
|
name="Product-Descriptor"
|
||||||
|
value="${package.descriptor.path}"/>
|
||||||
|
</manifest>
|
||||||
|
</jar>
|
||||||
|
|
||||||
|
<!-- copy the distributive to the distributives directory -->
|
||||||
|
<move file="${work.dir}/${group.dist.file.name}"
|
||||||
|
todir="${dist.dir}"/>
|
||||||
|
<if property="jarsigner.enabled" value="true">
|
||||||
|
<signjar jar="${dist.dir}/${group.dist.file.name}"
|
||||||
|
keystore="${jarsigner.keystore}"
|
||||||
|
storepass="${jarsigner.storepass}"
|
||||||
|
alias="${jarsigner.alias}"
|
||||||
|
maxmemory="${jarsigner.xmx}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Release
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Releases the group package to the registries server.
|
||||||
|
|
||||||
|
This target overrides the '-release' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly releasing the group
|
||||||
|
package.
|
||||||
|
|
||||||
|
It is assumed that the group package has already been built, but a
|
||||||
|
dependency on the 'build' target is not defined, as it may be desirable
|
||||||
|
to build once and then release several times to different registries
|
||||||
|
servers.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-release">
|
||||||
|
<if property="release.to.server" value="true">
|
||||||
|
<echo message="Release URL is ${release.url}"/>
|
||||||
|
<echo message="Archive is ${dist.dir}/${group.dist.file.name}"/>
|
||||||
|
|
||||||
|
<release-package-server
|
||||||
|
url="${release.url}"
|
||||||
|
registry="${release.registry}"
|
||||||
|
uid="${release.parent.uid}"
|
||||||
|
version="${release.parent.version}"
|
||||||
|
archive="${dist.dir}/${group.dist.file.name}"/>
|
||||||
|
</if>
|
||||||
|
<if property="release.to.server" value="false">
|
||||||
|
<echo message="Registry root is ${release.registry.dir}"/>
|
||||||
|
<echo message="Archive is ${dist.dir}/${group.dist.file.name}"/>
|
||||||
|
|
||||||
|
<release-package-filesystem
|
||||||
|
root="${release.registry.dir}"
|
||||||
|
uid="${release.parent.uid}"
|
||||||
|
version="${release.parent.version}"
|
||||||
|
archive="${dist.dir}/${group.dist.file.name}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Default
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The default target.
|
||||||
|
|
||||||
|
Does nothing except printing the usage information.
|
||||||
|
-->
|
||||||
|
<target name="usage">
|
||||||
|
<echo>
|
||||||
|
This is the base build script for nbi group package and is not
|
||||||
|
intended to be called directly. In order to create a derivative
|
||||||
|
implementation script, see
|
||||||
|
${basedir}/.templates/group-template.xml
|
||||||
|
</echo>
|
||||||
|
</target>
|
||||||
|
</project>
|
111
sdk/nbi/.common/product.properties
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
# whether to build native components or not; 'true'/'false'
|
||||||
|
# * normally a product does not have any native components, thus
|
||||||
|
# ${build.native} should be 'false' in most of the cases
|
||||||
|
build.native=false
|
||||||
|
|
||||||
|
# whether to build the netbeans part of the project or not; 'true'/'false'
|
||||||
|
build.nbproject=true
|
||||||
|
|
||||||
|
nbproject.dist.file.name=${product.uid},logic.jar
|
||||||
|
|
||||||
|
# whether to build engine or not; 'true'/'false'
|
||||||
|
build.engine=true
|
||||||
|
|
||||||
|
# whether to repackage the installation data or not; 'true'/'false'/'default'
|
||||||
|
# * if set to 'false' the data will be taken as it is (i.e. will be considered
|
||||||
|
# as already packaged)
|
||||||
|
# * if set to 'true' the data will be downloaded and packaged
|
||||||
|
# * if set to 'default' packaged data will be taken if it's available,
|
||||||
|
# otherwise raw data will be downloaded and packaged
|
||||||
|
package.data=default
|
||||||
|
|
||||||
|
# whether the packaged data should be released (copied) to the local packaged
|
||||||
|
# data repository; 'true'/'false'
|
||||||
|
release.packaged.data=true
|
||||||
|
|
||||||
|
# various properties controlling the engine's build process
|
||||||
|
engine.dir=${common.dir}/../engine
|
||||||
|
engine.work.dir=${work.dir}/.engine
|
||||||
|
engine.dist.dir=${dist.dir}/.engine
|
||||||
|
engine.dist.file.name=engine.jar
|
||||||
|
|
||||||
|
# path to the distributive file of the engine; it will be used as the classpath
|
||||||
|
# for building the product's netbeans project
|
||||||
|
# * if the ${build.engine} has been set to 'false', make sure that
|
||||||
|
# ${engine.dist.file} points to a precompiled engine
|
||||||
|
engine.dist.file=${engine.dist.dir}/${engine.dist.file.name}
|
||||||
|
|
||||||
|
downloads.cache.dir=${packaged.data.dir}/.raw
|
||||||
|
|
||||||
|
# various paths and file names that will be used for packaging the
|
||||||
|
# product
|
||||||
|
package.dir=${work.dir}/package
|
||||||
|
|
||||||
|
package.descriptor.path=registry.xml
|
||||||
|
|
||||||
|
product.path=products/${product.uid}/${product.version}/${product.platforms}
|
||||||
|
product.logic.path=${product.path}/logic
|
||||||
|
product.data.path=${product.path}/data
|
||||||
|
product.icon.path=${product.path}/icon.png
|
||||||
|
|
||||||
|
product.icon.uri=resource:${product.icon.path}
|
||||||
|
|
||||||
|
product.dist.file.name=${product.uid},${product.version},${product.platforms}.jar
|
||||||
|
|
||||||
|
# name of the product's configuration logic jar with index ${i}
|
||||||
|
product.logic.file.name=logic,${i}.jar
|
||||||
|
product.data.file.name=data,${i}.jar
|
||||||
|
|
||||||
|
# list of the locally cached pre-packaged data files
|
||||||
|
# * the length of the list equals to ${product.data.length}
|
||||||
|
# * ${packaged.data.dir} is the path to the local packaged data repository and
|
||||||
|
# is environment specific; it is expected to be passed in via the environment
|
||||||
|
# properties
|
||||||
|
product.packaged.data.file=${packaged.data.dir}/${product.uid},${product.version},${product.platforms},${i}.jar
|
||||||
|
product.packaged.data.properties.file=${packaged.data.dir}/${product.uid},${product.version},${product.platforms},${i}.jar.properties
|
||||||
|
|
||||||
|
# product icon and the localizing bundle, which is expected to contain
|
||||||
|
# display names and descriptions for all locales, supported by the product
|
||||||
|
# * these are file paths as opposed to uris for configuration logic and
|
||||||
|
# installation data
|
||||||
|
product.icon=${cvs.dir}/data/icon.png
|
||||||
|
product.bundle=${cvs.dir}/data/Bundle
|
746
sdk/nbi/.common/product.xml
Normal file
@ -0,0 +1,746 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is the base build script for an nbi product package.
|
||||||
|
|
||||||
|
It is not intended to be used directly, but to be imported into derivative
|
||||||
|
implementation scripts, which will provide properties' values that are
|
||||||
|
specific the concrete product implementation. The derivative scripts may also
|
||||||
|
provide some additional functionality that is required by their respective
|
||||||
|
product implementations.
|
||||||
|
|
||||||
|
This script exposes five primary targets: 'init', 'clean', 'checkout',
|
||||||
|
'build' and 'release'; as well as two aggregate targets: 'build-all',
|
||||||
|
which tranlates into 'init', 'clean', 'checkout', 'build', and
|
||||||
|
'release-all' - 'init', 'clean', 'checkout', 'build', 'release'. For the
|
||||||
|
detailed description of the functionality of these targets, consult the
|
||||||
|
corresponding documentation.
|
||||||
|
-->
|
||||||
|
<project name="product" default="usage" basedir=".">
|
||||||
|
<!-- a default value for the ${common.dir} property, which allows the user
|
||||||
|
to see the usage information is he calls this script directly and not
|
||||||
|
via a derivative (which is the proper way to do this) -->
|
||||||
|
<property name="common.dir" value="${basedir}"/>
|
||||||
|
|
||||||
|
<!-- import the common properties -->
|
||||||
|
<property file="${common.dir}/common.properties"/>
|
||||||
|
|
||||||
|
<!-- import properties specific to the product package's build script -->
|
||||||
|
<property file="${common.dir}/product.properties"/>
|
||||||
|
|
||||||
|
<!-- import the common target library -->
|
||||||
|
<import file="common.xml" optional="false"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Initialization
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Initializes the product package's build script.
|
||||||
|
|
||||||
|
This target overrides the '-init' target in common.xml, providing the
|
||||||
|
custom functionality that is required for the product package's build
|
||||||
|
script initialization.
|
||||||
|
|
||||||
|
In addition to the standard initialization routine, this target defines
|
||||||
|
several custom ant tasks, which are specific to the product package's build
|
||||||
|
script.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-init" depends=".init">
|
||||||
|
<!-- define custom ant tasks -->
|
||||||
|
<taskdef
|
||||||
|
name="sizeof"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.SizeOf"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="md5"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.Md5"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="sum"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.Sum"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="package"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.Package"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="load-locales"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.LoadLocales"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="product-descriptor"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.ProductDescriptor"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="absolutize"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.Absolutize"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="uri-to-path"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.UriToPath"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="n-unzip"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.NativeUnzip"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
<taskdef
|
||||||
|
name="n-untar"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.NativeUntar"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
|
||||||
|
<if property="release.to.server" value="true">
|
||||||
|
<taskdef
|
||||||
|
name="release-package-server"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.ReleasePackage"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if property="release.to.server" value="false">
|
||||||
|
<taskdef
|
||||||
|
name="release-package-filesystem"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.registries.AddPackage"
|
||||||
|
classpath="${custom.tasks.cls}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- check whether the engine should be built -->
|
||||||
|
<condition property="do.build.engine">
|
||||||
|
<equals arg1="${build.engine}" arg2="true"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- make the engine-related paths absolute -->
|
||||||
|
<absolutize property="engine.work.dir"/>
|
||||||
|
<absolutize property="engine.dist.dir"/>
|
||||||
|
|
||||||
|
<absolutize property="engine.dist.file"/>
|
||||||
|
|
||||||
|
<!-- define the javac.classpath for the netbeans project -->
|
||||||
|
<property
|
||||||
|
name="nb.custom.parameter"
|
||||||
|
value="-Djavac.classpath=${engine.dist.file}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Clean-up
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the current working directory and the distributives directory.
|
||||||
|
|
||||||
|
This target overrides the '-clean' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly cleaning the product
|
||||||
|
package.
|
||||||
|
|
||||||
|
In addition to the standard behavior the product package distributive file
|
||||||
|
is removed from the distributives directory.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-clean" depends="-clean-engine,.clean">
|
||||||
|
<!-- remove the product's distributive file from the distributives
|
||||||
|
directory -->
|
||||||
|
<delete file="${dist.dir}/${product.dist.file.name}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Cleans the engine.
|
||||||
|
|
||||||
|
It runs the 'clean' target on the engine's build script.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.engine} property was
|
||||||
|
set to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-clean-engine" depends="init" if="do.build.engine">
|
||||||
|
<exec executable="${ant.executable}"
|
||||||
|
dir="${engine.dir}"
|
||||||
|
failonerror="false">
|
||||||
|
<env key="JAVA_HOME" value="${java.home}"/>
|
||||||
|
<arg value="clean"/>
|
||||||
|
|
||||||
|
<arg value="-Dwork.dir=${engine.work.dir}"/>
|
||||||
|
<arg value="-Ddist.dir=${engine.dist.dir}"/>
|
||||||
|
|
||||||
|
<arg value="-Dbuild.native=false"/>
|
||||||
|
|
||||||
|
<arg value="-Ddont.build.custom.tasks=true"/>
|
||||||
|
<arg value="-Dcustom.tasks.cls=${custom.tasks.cls}"/>
|
||||||
|
|
||||||
|
<arg value="-Dengine.dist.file.name=${engine.dist.file.name}"/>
|
||||||
|
|
||||||
|
<arg value="-Denvironment.properties=${environment.properties}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Check-out
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The functionality of the checkout procedure for the product package is
|
||||||
|
indentical to the standard one, thus there is not need to override the
|
||||||
|
'-checkout' target, whosew default implementation is present in
|
||||||
|
common.xml.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Build
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the product package.
|
||||||
|
|
||||||
|
This target overrides the '-build' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly building the product
|
||||||
|
package.
|
||||||
|
|
||||||
|
The build process for the grup package consists of five steps.
|
||||||
|
1) The search-and-replace is run over the product's sources, based on the
|
||||||
|
[token] => [value] pairs defined in ${product.params.N.token} and
|
||||||
|
${product.params.N.value}
|
||||||
|
|
||||||
|
2) The product's icon is copied from its location to the product's package
|
||||||
|
directory structure and some metadata is calculated
|
||||||
|
|
||||||
|
3) The product's localizing bundle is loaded and the product package
|
||||||
|
descriptor is generated
|
||||||
|
|
||||||
|
4) The manifest for the product package is generated
|
||||||
|
|
||||||
|
5) The package directory structure is jarred, digitally signed and moved
|
||||||
|
to the distributives directory
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-build" depends="-build-engine,.build">
|
||||||
|
<!-- init the required disk space -->
|
||||||
|
<set property="product.disk.space"
|
||||||
|
value="${product.disk.space.modificator}"/>
|
||||||
|
|
||||||
|
<!-- init several shorthands -->
|
||||||
|
<set
|
||||||
|
property="product.logic.dir"
|
||||||
|
value="${package.dir}/${product.logic.path}"/>
|
||||||
|
<set
|
||||||
|
property="product.data.dir"
|
||||||
|
value="${package.dir}/${product.data.path}"/>
|
||||||
|
|
||||||
|
<!-- some necessary mkdirs -->
|
||||||
|
<mkdir dir="${packaged.data.dir}"/>
|
||||||
|
<mkdir dir="${downloads.cache.dir}"/>
|
||||||
|
<mkdir dir="${product.logic.dir}"/>
|
||||||
|
<mkdir dir="${product.data.dir}"/>
|
||||||
|
|
||||||
|
<!-- fetch the configuration logic jars; the first jar is handled
|
||||||
|
separately, if the the ${build.nbproject} has been set to true -
|
||||||
|
we don't need to fetch it, as we ca just copy -->
|
||||||
|
<if property="build.nbproject" value="true">
|
||||||
|
<set
|
||||||
|
property="i"
|
||||||
|
value="1"/>
|
||||||
|
<set
|
||||||
|
property="current.file"
|
||||||
|
value="${product.logic.dir}/${product.logic.file.name}"/>
|
||||||
|
|
||||||
|
<copy
|
||||||
|
file="${nbproject.dist.dir}/${nbproject.dist.file.name}"
|
||||||
|
tofile="${current.file}"/>
|
||||||
|
|
||||||
|
<!-- sign the current jar file -->
|
||||||
|
<if property="jarsigner.enabled" value="true">
|
||||||
|
<signjar jar="${current.file}"
|
||||||
|
keystore="${jarsigner.keystore}"
|
||||||
|
storepass="${jarsigner.storepass}"
|
||||||
|
alias="${jarsigner.alias}"
|
||||||
|
maxmemory="${jarsigner.xmx}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- calculate the metadata for the file -->
|
||||||
|
<sizeof file="${current.file}" property="product.logic.${i}.size"/>
|
||||||
|
<md5 file="${current.file}" property="product.logic.${i}.md5"/>
|
||||||
|
<set property="product.logic.${i}.correct.uri"
|
||||||
|
value="resource:${product.logic.path}/${product.logic.file.name}"/>
|
||||||
|
|
||||||
|
<property
|
||||||
|
name="start.index"
|
||||||
|
value="2"/>
|
||||||
|
</if>
|
||||||
|
<property name="start.index" value="1"/>
|
||||||
|
|
||||||
|
<for-each from="${start.index}"
|
||||||
|
to="${product.logic.length}"
|
||||||
|
property="i">
|
||||||
|
<!-- set the properties relevant to the current file -->
|
||||||
|
|
||||||
|
<set
|
||||||
|
property="current.file"
|
||||||
|
value="${product.logic.dir}/${product.logic.file.name}"/>
|
||||||
|
|
||||||
|
<condition property="product.logic.${i}.is.local" value="true" else="false">
|
||||||
|
<isset property="product.logic.${i}.path"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<if property="product.logic.${i}.is.local" value="false">
|
||||||
|
<set
|
||||||
|
property="current.uri"
|
||||||
|
source="product.logic.${i}.uri"/>
|
||||||
|
<get
|
||||||
|
src="${current.uri}"
|
||||||
|
dest="${current.file}"
|
||||||
|
usetimestamp="true"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if property="product.logic.${i}.is.local" value="true">
|
||||||
|
<set
|
||||||
|
property="current.path"
|
||||||
|
source="product.logic.${i}.path"/>
|
||||||
|
<copy
|
||||||
|
file="${current.path}"
|
||||||
|
tofile="${current.file}"
|
||||||
|
preservelastmodified="true"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- sign the current jar file -->
|
||||||
|
<if property="jarsigner.enabled" value="true">
|
||||||
|
<signjar
|
||||||
|
jar="${current.file}"
|
||||||
|
keystore="${jarsigner.keystore}"
|
||||||
|
storepass="${jarsigner.storepass}"
|
||||||
|
alias="${jarsigner.alias}"
|
||||||
|
maxmemory="${jarsigner.xmx}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- calculate the metadata for the file -->
|
||||||
|
<sizeof
|
||||||
|
file="${current.file}"
|
||||||
|
property="product.logic.${i}.size"/>
|
||||||
|
<md5
|
||||||
|
file="${current.file}"
|
||||||
|
property="product.logic.${i}.md5"/>
|
||||||
|
<set
|
||||||
|
property="product.logic.${i}.correct.uri"
|
||||||
|
value="resource:${product.logic.path}/${product.logic.file.name}"/>
|
||||||
|
</for-each>
|
||||||
|
|
||||||
|
<!-- fetch and repackage installation data zips -->
|
||||||
|
<set property="current.product.data.length"
|
||||||
|
value="${product.data.length}"/>
|
||||||
|
|
||||||
|
<for-each from="1" to="${current.product.data.length}" property="i">
|
||||||
|
<!-- define the path to the current working file and the temporary
|
||||||
|
directory which should be used for repackaging -->
|
||||||
|
<set
|
||||||
|
property="current.zip"
|
||||||
|
value="${product.data.${i}.zip}"/>
|
||||||
|
|
||||||
|
<condition property="product.tar.${i}.is.set" value="true" else="false">
|
||||||
|
<isset property="product.data.${i}.tar"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<if property="product.tar.${i}.is.set" value="true">
|
||||||
|
<set
|
||||||
|
property="current.tar"
|
||||||
|
value="${product.data.${i}.tar}"/>
|
||||||
|
</if>
|
||||||
|
<if property="product.tar.${i}.is.set" value="false">
|
||||||
|
<set
|
||||||
|
property="current.tar"
|
||||||
|
value="false"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<set
|
||||||
|
property="current.file"
|
||||||
|
value="${product.data.dir}/${product.data.file.name}"/>
|
||||||
|
<set
|
||||||
|
property="current.temp.dir"
|
||||||
|
value="${work.dir}/temp"/>
|
||||||
|
|
||||||
|
<set
|
||||||
|
property="current.packaged.data.file"
|
||||||
|
value="${product.packaged.data.file}"/>
|
||||||
|
<set
|
||||||
|
property="current.packaged.data.properties.file"
|
||||||
|
value="${product.packaged.data.properties.file}"/>
|
||||||
|
|
||||||
|
<condition property="do.package.data.${i}" value="true">
|
||||||
|
<or>
|
||||||
|
<equals arg1="${package.data}" arg2="true"/>
|
||||||
|
<and>
|
||||||
|
<equals
|
||||||
|
arg1="${package.data}"
|
||||||
|
arg2="default"/>
|
||||||
|
<not>
|
||||||
|
<and>
|
||||||
|
<available
|
||||||
|
file="${current.packaged.data.file}"/>
|
||||||
|
<available
|
||||||
|
file="${current.packaged.data.properties.file}"/>
|
||||||
|
</and>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="do.package.data.${i}" value="false">
|
||||||
|
<or>
|
||||||
|
<equals arg1="${package.data}" arg2="false"/>
|
||||||
|
<and>
|
||||||
|
<equals
|
||||||
|
arg1="${package.data}"
|
||||||
|
arg2="default"/>
|
||||||
|
<available
|
||||||
|
file="${current.packaged.data.file}"/>
|
||||||
|
<available
|
||||||
|
file="${current.packaged.data.properties.file}"/>
|
||||||
|
</and>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- if the data needs to be packaged -->
|
||||||
|
<if property="do.package.data.${i}" value="true">
|
||||||
|
|
||||||
|
<condition property="product.data.${i}.is.local" value="true" else="false">
|
||||||
|
<isset property="product.data.${i}.path"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<if property="product.data.${i}.is.local" value="false">
|
||||||
|
<set
|
||||||
|
property="current.uri"
|
||||||
|
source="product.data.${i}.uri"/>
|
||||||
|
<uri-to-path
|
||||||
|
property="current.downloaded.path"
|
||||||
|
uri="${current.uri}"/>
|
||||||
|
<set
|
||||||
|
property="current.download"
|
||||||
|
value="${downloads.cache.dir}/${current.downloaded.path}"/>
|
||||||
|
|
||||||
|
<dirname
|
||||||
|
property="current.download.${i}.dir"
|
||||||
|
file="${current.download}"/>
|
||||||
|
<set
|
||||||
|
property="current.download.dir"
|
||||||
|
source="current.download.${i}.dir"/>
|
||||||
|
<mkdir
|
||||||
|
dir="${current.download.dir}"/>
|
||||||
|
|
||||||
|
<get
|
||||||
|
src="${current.uri}"
|
||||||
|
dest="${current.download}"
|
||||||
|
usetimestamp="true"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if property="product.data.${i}.is.local" value="true">
|
||||||
|
<set property="current.download"
|
||||||
|
source="product.data.${i}.path"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- extract the zip file to a temporary directory, if it's a
|
||||||
|
zip file, or simply move it there if it is the data we
|
||||||
|
need -->
|
||||||
|
<mkdir
|
||||||
|
dir="${current.temp.dir}"/>
|
||||||
|
<if property="current.zip" value="true">
|
||||||
|
<n-unzip
|
||||||
|
src="${current.download}"
|
||||||
|
dest="${current.temp.dir}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if property="current.tar" value="true">
|
||||||
|
<n-untar
|
||||||
|
src="${current.download}"
|
||||||
|
dest="${current.temp.dir}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<condition property="do.copy.data.${i}" value="true">
|
||||||
|
<and>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${current.zip}" arg2="true"/>
|
||||||
|
</not>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${current.tar}" arg2="true"/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<if property="do.copy.data.${i}" value="true">
|
||||||
|
<copy file="${current.download}"
|
||||||
|
todir="${current.temp.dir}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- call the pre-package hook, to allow derivative scripts to
|
||||||
|
perform any required operations on the data if they
|
||||||
|
like -->
|
||||||
|
<antcall target="-pre-package">
|
||||||
|
<param name="i" value="${i}"/>
|
||||||
|
<param name="data.directory" value="${current.temp.dir}"/>
|
||||||
|
</antcall>
|
||||||
|
|
||||||
|
<!-- measure its size and add it to the required disk space -->
|
||||||
|
<sizeof
|
||||||
|
file="${current.temp.dir}"
|
||||||
|
property="current.disk.space"/>
|
||||||
|
<sum
|
||||||
|
arg1="${product.disk.space}"
|
||||||
|
arg2="${current.disk.space}"
|
||||||
|
property="product.disk.space"/>
|
||||||
|
|
||||||
|
<!-- repackage (pack200, jar) and build files list -->
|
||||||
|
<package
|
||||||
|
directory="${current.temp.dir}"
|
||||||
|
file="${current.file}"/>
|
||||||
|
|
||||||
|
<!-- if we need to release the packaged data - copy the file
|
||||||
|
and the original size to the specified directory -->
|
||||||
|
<if property="release.packaged.data" value="true">
|
||||||
|
<mkdir
|
||||||
|
dir="${packaged.data.dir}"/>
|
||||||
|
|
||||||
|
<copy file="${current.file}"
|
||||||
|
tofile="${current.packaged.data.file}"/>
|
||||||
|
<echo
|
||||||
|
message="product.data.${i}.size=${current.disk.space}"
|
||||||
|
file="${current.packaged.data.properties.file}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- remove the temporary directory -->
|
||||||
|
<delete dir="${current.temp.dir}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- if the data does not need to be packaged -->
|
||||||
|
<if property="do.package.data.${i}" value="false">
|
||||||
|
<copy
|
||||||
|
file="${current.packaged.data.file}"
|
||||||
|
tofile="${current.file}"/>
|
||||||
|
|
||||||
|
<!-- fetch the real size data -->
|
||||||
|
<property
|
||||||
|
file="${current.packaged.data.properties.file}"/>
|
||||||
|
|
||||||
|
<set
|
||||||
|
property="current.disk.space"
|
||||||
|
source="product.data.${i}.size"/>
|
||||||
|
<sum
|
||||||
|
arg1="${product.disk.space}"
|
||||||
|
arg2="${current.disk.space}"
|
||||||
|
property="product.disk.space"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- sign the resulting jar file -->
|
||||||
|
<if property="jarsigner.enabled" value="true">
|
||||||
|
<signjar
|
||||||
|
jar="${current.file}"
|
||||||
|
keystore="${jarsigner.keystore}"
|
||||||
|
storepass="${jarsigner.storepass}"
|
||||||
|
alias="${jarsigner.alias}"
|
||||||
|
maxmemory="${jarsigner.xmx}"/>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<!-- calculate the metadata for the file -->
|
||||||
|
<sizeof
|
||||||
|
file="${current.file}"
|
||||||
|
property="product.data.${i}.size"/>
|
||||||
|
<md5
|
||||||
|
file="${current.file}"
|
||||||
|
property="product.data.${i}.md5"/>
|
||||||
|
<set
|
||||||
|
property="product.data.${i}.correct.uri"
|
||||||
|
value="resource:${product.data.path}/${product.data.file.name}"/>
|
||||||
|
</for-each>
|
||||||
|
|
||||||
|
<!-- fetch the icon -->
|
||||||
|
<set
|
||||||
|
property="product.icon.file"
|
||||||
|
value="${package.dir}/${product.icon.path}"/>
|
||||||
|
|
||||||
|
<copy
|
||||||
|
file="${product.icon}"
|
||||||
|
tofile="${product.icon.file}"/>
|
||||||
|
<sizeof
|
||||||
|
file="${product.icon.file}"
|
||||||
|
property="product.icon.size"/>
|
||||||
|
<md5
|
||||||
|
file="${product.icon.file}"
|
||||||
|
property="product.icon.md5"/>
|
||||||
|
<set
|
||||||
|
property="product.icon.correct.uri"
|
||||||
|
value="${product.icon.uri}"/>
|
||||||
|
|
||||||
|
<!-- load product's localizing bundle and generate descriptor -->
|
||||||
|
<load-locales
|
||||||
|
basename="${product.bundle}"
|
||||||
|
list="product.locales.list"/>
|
||||||
|
<product-descriptor
|
||||||
|
file="${package.dir}/${package.descriptor.path}"/>
|
||||||
|
|
||||||
|
<!-- create the distributive jar file and sign it -->
|
||||||
|
<set
|
||||||
|
property="product.dist.file"
|
||||||
|
value="${dist.dir}/${product.dist.file.name}"/>
|
||||||
|
|
||||||
|
<jar basedir="${package.dir}"
|
||||||
|
destfile="${product.dist.file}"
|
||||||
|
compress="true">
|
||||||
|
<manifest>
|
||||||
|
<attribute
|
||||||
|
name="Product-Descriptor"
|
||||||
|
value="${package.descriptor.path}"/>
|
||||||
|
</manifest>
|
||||||
|
</jar>
|
||||||
|
<if property="jarsigner.enabled" value="true">
|
||||||
|
<signjar
|
||||||
|
jar="${product.dist.file}"
|
||||||
|
keystore="${jarsigner.keystore}"
|
||||||
|
storepass="${jarsigner.storepass}"
|
||||||
|
alias="${jarsigner.alias}"
|
||||||
|
maxmemory="${jarsigner.xmx}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Builds the engine.
|
||||||
|
|
||||||
|
It runs the 'build-all' target on the engine's build script.
|
||||||
|
|
||||||
|
This target is only executed if the the ${build.engine} property was
|
||||||
|
set to 'true'.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-build-engine" depends="init" if="do.build.engine">
|
||||||
|
<exec executable="${ant.executable}"
|
||||||
|
dir="${engine.dir}"
|
||||||
|
failonerror="true"
|
||||||
|
failifexecutionfails="true">
|
||||||
|
<arg value="checkout,build"/>
|
||||||
|
|
||||||
|
<arg value="-Dwork.dir=${engine.work.dir}"/>
|
||||||
|
<arg value="-Ddist.dir=${engine.dist.dir}"/>
|
||||||
|
|
||||||
|
<arg value="-Dbuild.native=false"/>
|
||||||
|
|
||||||
|
<arg value="-Ddont.build.custom.tasks=true"/>
|
||||||
|
<arg value="-Dcustom.tasks.cls=${custom.tasks.cls}"/>
|
||||||
|
|
||||||
|
<arg value="-Dengine.dist.file.name=${engine.dist.file.name}"/>
|
||||||
|
|
||||||
|
<arg value="-Denvironment.properties=${environment.properties}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
An empty hook.
|
||||||
|
|
||||||
|
It allows derivative scripts to perform arbitrary manipulations on the
|
||||||
|
data prior to it getting packaged. E.g. the netbeans ide build script
|
||||||
|
might want to remove the 'netbeans' directory and move its contents up one
|
||||||
|
level.
|
||||||
|
|
||||||
|
A special property - 'data.directory' will be set pointing to the
|
||||||
|
unzipped data.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-pre-package"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Release
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Releases the product package to the registries server.
|
||||||
|
|
||||||
|
This target overrides the '-release' target in common.xml, providing the
|
||||||
|
custom functionality that is required for correctly releasing the product
|
||||||
|
package.
|
||||||
|
|
||||||
|
It is assumed that the product package has already been built, but a
|
||||||
|
dependency on the 'build' target is not defined, as it may be desirable
|
||||||
|
to build once and then release several times to different registries
|
||||||
|
servers.
|
||||||
|
|
||||||
|
This target is not intended to be called directly.
|
||||||
|
-->
|
||||||
|
<target name="-release">
|
||||||
|
<if property="release.to.server" value="true">
|
||||||
|
<echo message="Release URL is ${release.url}"/>
|
||||||
|
<echo message="Archive is ${product.dist.file}"/>
|
||||||
|
|
||||||
|
<release-package-server
|
||||||
|
url="${release.url}"
|
||||||
|
registry="${release.registry}"
|
||||||
|
uid="${release.parent.uid}"
|
||||||
|
version="${release.parent.version}"
|
||||||
|
platforms="${product.platforms}"
|
||||||
|
archive="${product.dist.file}"/>
|
||||||
|
</if>
|
||||||
|
<if property="release.to.server" value="false">
|
||||||
|
<echo message="Registry root is ${release.registry.dir}"/>
|
||||||
|
<echo message="Archive is ${product.dist.file}"/>
|
||||||
|
|
||||||
|
<release-package-filesystem
|
||||||
|
root="${release.registry.dir}"
|
||||||
|
uid="${release.parent.uid}"
|
||||||
|
version="${release.parent.version}"
|
||||||
|
platforms="${product.platforms}"
|
||||||
|
archive="${product.dist.file}"/>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Default
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The default target.
|
||||||
|
|
||||||
|
Does nothing except printing the usage information.
|
||||||
|
-->
|
||||||
|
<target name="usage">
|
||||||
|
<echo>
|
||||||
|
This is the base build script for nbi product package and is not
|
||||||
|
intended to be called directly. In order to create a derivative
|
||||||
|
implementation script, see
|
||||||
|
${basedir}/.templates/product-template.xml
|
||||||
|
</echo>
|
||||||
|
</target>
|
||||||
|
</project>
|
BIN
sdk/nbi/antlib/nbi-ant-tasks.jar
Normal file
BIN
sdk/nbi/antlib/nbi-engine.jar
Normal file
BIN
sdk/nbi/antlib/nbi-registries-management.jar
Normal file
49
sdk/nbi/stub/build.properties
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of the Common Development and
|
||||||
|
# Distribution License (the License). You may not use this file except in compliance
|
||||||
|
# with the License.
|
||||||
|
#
|
||||||
|
# You can obtain a copy of the License at http://www.netbeans.org/cddl.html or
|
||||||
|
# http://www.netbeans.org/cddl.txt.
|
||||||
|
#
|
||||||
|
# When distributing Covered Code, include this CDDL Header Notice in each file and
|
||||||
|
# include the License file at http://www.netbeans.org/cddl.txt. If applicable, add
|
||||||
|
# the following below the CDDL Header, with the fields enclosed by brackets []
|
||||||
|
# replaced by your own identifying information:
|
||||||
|
#
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
|
||||||
|
output.dir=${basedir}/build
|
||||||
|
jarsigner.enabled=false
|
||||||
|
pack200.enabled={pack200.enabled}
|
||||||
|
core.module.name=nbi
|
||||||
|
ext.module.name=ext
|
||||||
|
|
||||||
|
nbi.all.dir=${basedir}/nbi_all
|
||||||
|
nbi.core.dir=${nbi.all.dir}/${core.module.name}
|
||||||
|
nbi.ext.dir=${nbi.all.dir}/${ext.module.name}
|
||||||
|
|
||||||
|
temp.file=${nbi.all.dir}/temp.ant.tmp
|
||||||
|
environment.properties=${nbi.all.dir}/environment.properties
|
||||||
|
|
||||||
|
context.path.token=/nbi/dev
|
||||||
|
context.path.replacement=${context.path}
|
||||||
|
|
||||||
|
context.dir.token=ROOT = new File\\(".*?"\\);
|
||||||
|
context.dir.replacement=ROOT = new File\\("${context.dir}"\);
|
||||||
|
|
||||||
|
custom.tasks.cls={nbi.ant.tasks.jar}${path.separator}{nbi.registries.management.jar}${path.separator}{nbi.engine.jar}
|
||||||
|
nbi.engine.jar={nbi.engine.jar}
|
||||||
|
|
||||||
|
jdk.home={generator-jdk-location-forward-slashes}
|
||||||
|
bundles.release.dir={generated-installers-location-forward-slashes}
|
||||||
|
bundle.files.prefix={generated-installers-prefix}
|
||||||
|
|
||||||
|
target.platforms={product-platforms}
|
||||||
|
main.product.uid={product-uid}
|
||||||
|
main.product.version={product-version}
|
203
sdk/nbi/stub/build.xml
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
<project name="build installers" default="build" basedir=".">
|
||||||
|
<property file="${basedir}/build.properties"/>
|
||||||
|
<property file="${basedir}/custom.properties"/>
|
||||||
|
|
||||||
|
<target name="build" depends="init,-build,-generate-bundles,post-build"/>
|
||||||
|
|
||||||
|
<target name="init" depends="-clean,-checkout,-init,-init-properties,-post-init-clean"/>
|
||||||
|
|
||||||
|
<target name="-clean-cvs" unless="no.checkout">
|
||||||
|
<delete dir="${nbi.all.dir}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-clean" depends="-clean-cvs" unless="no.clean">
|
||||||
|
<delete dir="${output.dir}"/>
|
||||||
|
<delete dir="${nbi.ext.dir}/products/helloworld/build"/>
|
||||||
|
<delete dir="${nbi.ext.dir}/products/helloworld/dist"/>
|
||||||
|
<delete dir="${nbi.ext.dir}/engine/build"/>
|
||||||
|
<delete dir="${nbi.ext.dir}/engine/dist"/>
|
||||||
|
|
||||||
|
<!--<delete dir="${basedir}/cache"/>-->
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="post-build">
|
||||||
|
<delete dir="${output.dir}/registry-temp"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-checkout">
|
||||||
|
|
||||||
|
<copy todir="${nbi.all.dir}/.common">
|
||||||
|
<fileset dir="${basedir}/.common"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<copy todir="${nbi.ext.dir}">
|
||||||
|
<fileset dir="${basedir}/ext">
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-init">
|
||||||
|
<taskdef
|
||||||
|
name="if"
|
||||||
|
classpath="${custom.tasks.cls}"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.If"/>
|
||||||
|
<taskdef
|
||||||
|
name="for-each"
|
||||||
|
classpath="${custom.tasks.cls}"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.ForEach"/>
|
||||||
|
<taskdef
|
||||||
|
name="set"
|
||||||
|
classpath="${custom.tasks.cls}"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.SetProperty"/>
|
||||||
|
|
||||||
|
<taskdef
|
||||||
|
name="create-bundle"
|
||||||
|
classpath="${custom.tasks.cls}"
|
||||||
|
classname="org.netbeans.installer.infra.build.ant.registries.CreateBundle"/>
|
||||||
|
|
||||||
|
<delete file="${temp.file}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-init-properties">
|
||||||
|
<echo file="${nbi.all.dir}/environment.tmp" encoding="utf-8">
|
||||||
|
checkout.sources=false
|
||||||
|
sources.dir=${nbi.all.dir}
|
||||||
|
cvs.module=ext
|
||||||
|
|
||||||
|
release.to.server=false
|
||||||
|
release.registry.dir=${output.dir}/registry-temp
|
||||||
|
|
||||||
|
dont.build.custom.tasks=true
|
||||||
|
custom.tasks.cls=${custom.tasks.cls}
|
||||||
|
|
||||||
|
build.engine=false
|
||||||
|
|
||||||
|
engine.dist.file.name=nbi-engine.jar
|
||||||
|
engine.dist.file=${nbi.core.dir}/infra/build/engine/dist/nbi-engine.jar
|
||||||
|
|
||||||
|
packaged.data.dir=${basedir}/cache/packaged
|
||||||
|
downloads.cache.dir=${basedir}/cache/raw
|
||||||
|
|
||||||
|
jarsigner.enabled=${jarsigner.enabled}
|
||||||
|
</echo>
|
||||||
|
<replace file="${nbi.all.dir}/environment.tmp" token="\" value="/" encoding="utf-8"/>
|
||||||
|
<native2ascii src="${nbi.all.dir}" dest="${nbi.all.dir}" encoding="utf-8" includes="environment.tmp" ext=".properties"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-post-init-clean">
|
||||||
|
<delete dir="${basedir}/cache/raw"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-build">
|
||||||
|
<delete dir="${output.dir}"/>
|
||||||
|
|
||||||
|
<mkdir dir="${output.dir}"/>
|
||||||
|
<mkdir dir="${bundles.release.dir}"/>
|
||||||
|
<mkdir dir="${output.dir}/components"/>
|
||||||
|
|
||||||
|
<property name="engine.dist.file.name" value="nbi-engine.jar"/>
|
||||||
|
|
||||||
|
<echo message="BUILDING HELLOWORLD EXT ENGINE =================================="/>
|
||||||
|
<ant dir="${nbi.ext.dir}/infra/build/engine" target="release-all">
|
||||||
|
<property
|
||||||
|
name="basedir"
|
||||||
|
value="${nbi.ext.dir}/infra/build/engine"/>
|
||||||
|
<property
|
||||||
|
name="environment.properties"
|
||||||
|
value="${environment.properties}"/>
|
||||||
|
|
||||||
|
<property
|
||||||
|
name="core.engine.dist.file"
|
||||||
|
value="${nbi.engine.jar}"/>
|
||||||
|
</ant>
|
||||||
|
|
||||||
|
|
||||||
|
<echo message="BUILDING HELLOWORLD PRODUCT =================================="/>
|
||||||
|
<ant dir="${nbi.ext.dir}/infra/build/products/helloworld" target="release-all">
|
||||||
|
<property
|
||||||
|
name="basedir"
|
||||||
|
value="${nbi.ext.dir}/infra/build/products/helloworld"/>
|
||||||
|
<property
|
||||||
|
name="environment.properties"
|
||||||
|
value="${environment.properties}"/>
|
||||||
|
<property
|
||||||
|
name="dist.dir"
|
||||||
|
value="${output.dir}/components"/>
|
||||||
|
|
||||||
|
<property
|
||||||
|
name="release.parent.uid"
|
||||||
|
value=""/>
|
||||||
|
<property
|
||||||
|
name="release.parent.version"
|
||||||
|
value=""/>
|
||||||
|
<property
|
||||||
|
name="release.parent.platforms"
|
||||||
|
value=""/>
|
||||||
|
|
||||||
|
<property
|
||||||
|
name="engine.dist.file"
|
||||||
|
value="${output.dir}/registry-temp/engine.jar"/>
|
||||||
|
|
||||||
|
|
||||||
|
</ant>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-generate-bundles">
|
||||||
|
<for-each property="platform" list="${target.platforms}" separator=" ">
|
||||||
|
|
||||||
|
<condition property="bundle.extention.${platform}" value="exe">
|
||||||
|
<contains string="${platform}" substring="windows"/>
|
||||||
|
</condition>
|
||||||
|
<condition property="bundle.extention.${platform}" value="sh">
|
||||||
|
<or>
|
||||||
|
<contains string="${platform}" substring="linux"/>
|
||||||
|
<contains string="${platform}" substring="solaris"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="bundle.extention.${platform}" value="zip">
|
||||||
|
<contains string="${platform}" substring="macosx"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<set property="bundle.extention" source="bundle.extention.${platform}"/>
|
||||||
|
|
||||||
|
<create-bundle root="${output.dir}/registry-temp"
|
||||||
|
platform="${platform}"
|
||||||
|
target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
|
||||||
|
<!--normen-->
|
||||||
|
<component uid="${main.product.uid}" version="${main.product.version}"/><!--0.8.0.0.0-->
|
||||||
|
</create-bundle>
|
||||||
|
<if property="bundle.extention" value="zip">
|
||||||
|
<antcall target="zip-to-tgz">
|
||||||
|
<param name="input.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
|
||||||
|
<param name="output.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.tgz"/>
|
||||||
|
</antcall>
|
||||||
|
<delete file="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
|
||||||
|
</if>
|
||||||
|
</for-each>
|
||||||
|
<echo>Installer(s) for [${target.platforms}] are available at ${bundles.release.dir}</echo>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="zip-to-tgz">
|
||||||
|
<set property="tar.tmpdir"
|
||||||
|
value="${bundles.release.dir}/tempdir"/>
|
||||||
|
|
||||||
|
<mkdir dir="${tar.tmpdir}"/>
|
||||||
|
|
||||||
|
<unzip
|
||||||
|
src="${input.file}"
|
||||||
|
dest="${tar.tmpdir}"/>
|
||||||
|
|
||||||
|
<tar tarfile="${output.file}"
|
||||||
|
compression="gzip">
|
||||||
|
<tarfileset dir="${tar.tmpdir}" mode="644">
|
||||||
|
<include name="**/*.*"/>
|
||||||
|
<exclude name="**/executable"/>
|
||||||
|
</tarfileset>
|
||||||
|
<tarfileset dir="${tar.tmpdir}" mode="755">
|
||||||
|
<include name="**/executable"/>
|
||||||
|
</tarfileset>
|
||||||
|
</tar>
|
||||||
|
<delete dir="${tar.tmpdir}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
</project>
|
74
sdk/nbi/stub/ext/components/products/helloworld/build.xml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- You may freely edit this file. See commented blocks below for -->
|
||||||
|
<!-- some examples of how to customize the build. -->
|
||||||
|
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
||||||
|
<!-- By default, only the Clean and Build commands use this build script. -->
|
||||||
|
<!-- Commands such as Run, Debug, and Test only use this build script if -->
|
||||||
|
<!-- the Compile on Save feature is turned off for the project. -->
|
||||||
|
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
|
||||||
|
<!-- in the project's Project Properties dialog box.-->
|
||||||
|
<project name="helloworld" default="default" basedir=".">
|
||||||
|
<description>Builds, tests, and runs the project helloworld.</description>
|
||||||
|
<import file="nbproject/build-impl.xml"/>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
There exist several targets which are by default empty and which can be
|
||||||
|
used for execution of your tasks. These targets are usually executed
|
||||||
|
before and after some main targets. They are:
|
||||||
|
|
||||||
|
-pre-init: called before initialization of project properties
|
||||||
|
-post-init: called after initialization of project properties
|
||||||
|
-pre-compile: called before javac compilation
|
||||||
|
-post-compile: called after javac compilation
|
||||||
|
-pre-compile-single: called before javac compilation of single file
|
||||||
|
-post-compile-single: called after javac compilation of single file
|
||||||
|
-pre-compile-test: called before javac compilation of JUnit tests
|
||||||
|
-post-compile-test: called after javac compilation of JUnit tests
|
||||||
|
-pre-compile-test-single: called before javac compilation of single JUnit test
|
||||||
|
-post-compile-test-single: called after javac compilation of single JUunit test
|
||||||
|
-pre-jar: called before JAR building
|
||||||
|
-post-jar: called after JAR building
|
||||||
|
-post-clean: called after cleaning build products
|
||||||
|
|
||||||
|
(Targets beginning with '-' are not intended to be called on their own.)
|
||||||
|
|
||||||
|
Example of inserting an obfuscator after compilation could look like this:
|
||||||
|
|
||||||
|
<target name="-post-compile">
|
||||||
|
<obfuscate>
|
||||||
|
<fileset dir="${build.classes.dir}"/>
|
||||||
|
</obfuscate>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
For list of available properties check the imported
|
||||||
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
|
||||||
|
Another way to customize the build is by overriding existing main targets.
|
||||||
|
The targets of interest are:
|
||||||
|
|
||||||
|
-init-macrodef-javac: defines macro for javac compilation
|
||||||
|
-init-macrodef-junit: defines macro for junit execution
|
||||||
|
-init-macrodef-debug: defines macro for class debugging
|
||||||
|
-init-macrodef-java: defines macro for class execution
|
||||||
|
-do-jar-with-manifest: JAR building (if you are using a manifest)
|
||||||
|
-do-jar-without-manifest: JAR building (if you are not using a manifest)
|
||||||
|
run: execution of project
|
||||||
|
-javadoc-build: Javadoc generation
|
||||||
|
test-report: JUnit report generation
|
||||||
|
|
||||||
|
An example of overriding the target for project execution could look like this:
|
||||||
|
|
||||||
|
<target name="run" depends="helloworld-impl.jar">
|
||||||
|
<exec dir="bin" executable="launcher.exe">
|
||||||
|
<arg file="${dist.jar}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
Notice that the overridden target depends on the jar target and not only on
|
||||||
|
the compile target as the regular run target does. Again, for a list of available
|
||||||
|
properties which you can use, check the target you are overriding in the
|
||||||
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
-->
|
||||||
|
</project>
|
@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
product.display.name={product-name}
|
||||||
|
product.description={product-description}
|
BIN
sdk/nbi/stub/ext/components/products/helloworld/data/icon.png
Normal file
After Width: | Height: | Size: 821 B |
BIN
sdk/nbi/stub/ext/components/products/helloworld/data/icon48.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
@ -0,0 +1 @@
|
|||||||
|
Configuration-Logic-Class: org.mycompany.ConfigurationLogic
|
@ -0,0 +1,631 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
*** GENERATED FROM project.xml - DO NOT EDIT ***
|
||||||
|
*** EDIT ../build.xml INSTEAD ***
|
||||||
|
|
||||||
|
For the purpose of easier reading the script
|
||||||
|
is divided into following sections:
|
||||||
|
|
||||||
|
- initialization
|
||||||
|
- compilation
|
||||||
|
- jar
|
||||||
|
- execution
|
||||||
|
- debugging
|
||||||
|
- javadoc
|
||||||
|
- junit compilation
|
||||||
|
- junit execution
|
||||||
|
- junit debugging
|
||||||
|
- applet
|
||||||
|
- cleanup
|
||||||
|
|
||||||
|
-->
|
||||||
|
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="helloworld-impl">
|
||||||
|
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
|
||||||
|
<!--
|
||||||
|
======================
|
||||||
|
INITIALIZATION SECTION
|
||||||
|
======================
|
||||||
|
-->
|
||||||
|
<target name="-pre-init">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init" name="-init-private">
|
||||||
|
<property file="nbproject/private/config.properties"/>
|
||||||
|
<property file="nbproject/private/configs/${config}.properties"/>
|
||||||
|
<property file="nbproject/private/private.properties"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private" name="-init-user">
|
||||||
|
<property file="${user.properties.file}"/>
|
||||||
|
<!-- The two properties below are usually overridden -->
|
||||||
|
<!-- by the active platform. Just a fallback. -->
|
||||||
|
<property name="default.javac.source" value="1.4"/>
|
||||||
|
<property name="default.javac.target" value="1.4"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
|
||||||
|
<property file="nbproject/configs/${config}.properties"/>
|
||||||
|
<property file="nbproject/project.properties"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
|
||||||
|
<available file="${manifest.file}" property="manifest.available"/>
|
||||||
|
<condition property="manifest.available+main.class">
|
||||||
|
<and>
|
||||||
|
<isset property="manifest.available"/>
|
||||||
|
<isset property="main.class"/>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${main.class}" arg2="" trim="true"/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="manifest.available+main.class+mkdist.available">
|
||||||
|
<and>
|
||||||
|
<istrue value="${manifest.available+main.class}"/>
|
||||||
|
<isset property="libs.CopyLibs.classpath"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="have.tests">
|
||||||
|
<or>
|
||||||
|
<available file="${test.src.dir}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="have.sources">
|
||||||
|
<or>
|
||||||
|
<available file="${src.dir}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="netbeans.home+have.tests">
|
||||||
|
<and>
|
||||||
|
<isset property="netbeans.home"/>
|
||||||
|
<isset property="have.tests"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="no.javadoc.preview">
|
||||||
|
<and>
|
||||||
|
<isset property="javadoc.preview"/>
|
||||||
|
<isfalse value="${javadoc.preview}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="run.jvmargs" value=""/>
|
||||||
|
<property name="javac.compilerargs" value=""/>
|
||||||
|
<property name="work.dir" value="${basedir}"/>
|
||||||
|
<condition property="no.deps">
|
||||||
|
<and>
|
||||||
|
<istrue value="${no.dependencies}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="javac.debug" value="true"/>
|
||||||
|
<property name="javadoc.preview" value="true"/>
|
||||||
|
<property name="application.args" value=""/>
|
||||||
|
<property name="source.encoding" value="${file.encoding}"/>
|
||||||
|
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
|
||||||
|
<and>
|
||||||
|
<isset property="javadoc.encoding"/>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${javadoc.encoding}" arg2=""/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="javadoc.encoding.used" value="${source.encoding}"/>
|
||||||
|
<property name="includes" value="**"/>
|
||||||
|
<property name="excludes" value=""/>
|
||||||
|
<property name="do.depend" value="false"/>
|
||||||
|
<condition property="do.depend.true">
|
||||||
|
<istrue value="${do.depend}"/>
|
||||||
|
</condition>
|
||||||
|
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
|
||||||
|
<and>
|
||||||
|
<isset property="jaxws.endorsed.dir"/>
|
||||||
|
<available file="nbproject/jaxws-build.xml"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target name="-post-init">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
|
||||||
|
<fail unless="src.dir">Must set src.dir</fail>
|
||||||
|
<fail unless="test.src.dir">Must set test.src.dir</fail>
|
||||||
|
<fail unless="build.dir">Must set build.dir</fail>
|
||||||
|
<fail unless="dist.dir">Must set dist.dir</fail>
|
||||||
|
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
|
||||||
|
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
|
||||||
|
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
|
||||||
|
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
|
||||||
|
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
|
||||||
|
<fail unless="dist.jar">Must set dist.jar</fail>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-property">
|
||||||
|
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute name="name"/>
|
||||||
|
<attribute name="value"/>
|
||||||
|
<sequential>
|
||||||
|
<property name="@{name}" value="${@{value}}"/>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-javac">
|
||||||
|
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${src.dir}" name="srcdir"/>
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<attribute default="${javac.classpath}" name="classpath"/>
|
||||||
|
<attribute default="${includes}" name="includes"/>
|
||||||
|
<attribute default="${excludes}" name="excludes"/>
|
||||||
|
<attribute default="${javac.debug}" name="debug"/>
|
||||||
|
<attribute default="" name="sourcepath"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
|
||||||
|
<customize/>
|
||||||
|
</javac>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${src.dir}" name="srcdir"/>
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<attribute default="${javac.classpath}" name="classpath"/>
|
||||||
|
<sequential>
|
||||||
|
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
</depend>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<sequential>
|
||||||
|
<fail unless="javac.includes">Must set javac.includes</fail>
|
||||||
|
<pathconvert pathsep="," property="javac.includes.binary">
|
||||||
|
<path>
|
||||||
|
<filelist dir="@{destdir}" files="${javac.includes}"/>
|
||||||
|
</path>
|
||||||
|
<globmapper from="*.java" to="*.class"/>
|
||||||
|
</pathconvert>
|
||||||
|
<delete>
|
||||||
|
<files includes="${javac.includes.binary}"/>
|
||||||
|
</delete>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-junit">
|
||||||
|
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${includes}" name="includes"/>
|
||||||
|
<attribute default="${excludes}" name="excludes"/>
|
||||||
|
<attribute default="**" name="testincludes"/>
|
||||||
|
<sequential>
|
||||||
|
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
|
||||||
|
<batchtest todir="${build.test.results.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
|
||||||
|
<filename name="@{testincludes}"/>
|
||||||
|
</fileset>
|
||||||
|
</batchtest>
|
||||||
|
<classpath>
|
||||||
|
<path path="${run.test.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="test-sys-prop."/>
|
||||||
|
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<formatter type="brief" usefile="false"/>
|
||||||
|
<formatter type="xml"/>
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
</junit>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-nbjpda">
|
||||||
|
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${main.class}" name="name"/>
|
||||||
|
<attribute default="${debug.classpath}" name="classpath"/>
|
||||||
|
<attribute default="" name="stopclassname"/>
|
||||||
|
<sequential>
|
||||||
|
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
</nbjpdastart>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${build.classes.dir}" name="dir"/>
|
||||||
|
<sequential>
|
||||||
|
<nbjpdareload>
|
||||||
|
<fileset dir="@{dir}" includes="${fix.includes}*.class"/>
|
||||||
|
</nbjpdareload>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-debug-args">
|
||||||
|
<property name="version-output" value="java version "${ant.java.version}"/>
|
||||||
|
<condition property="have-jdk-older-than-1.4">
|
||||||
|
<or>
|
||||||
|
<contains string="${version-output}" substring="java version "1.0"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.1"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.2"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.3"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
|
||||||
|
<istrue value="${have-jdk-older-than-1.4}"/>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target depends="-init-debug-args" name="-init-macrodef-debug">
|
||||||
|
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${main.class}" name="classname"/>
|
||||||
|
<attribute default="${debug.classpath}" name="classpath"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<java classname="@{classname}" dir="${work.dir}" fork="true">
|
||||||
|
<jvmarg line="${debug-args-line}"/>
|
||||||
|
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="run-sys-prop."/>
|
||||||
|
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<customize/>
|
||||||
|
</java>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-java">
|
||||||
|
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${main.class}" name="classname"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<java classname="@{classname}" dir="${work.dir}" fork="true">
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
<classpath>
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="run-sys-prop."/>
|
||||||
|
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<customize/>
|
||||||
|
</java>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-presetdef-jar">
|
||||||
|
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<jar compress="${jar.compress}" jarfile="${dist.jar}">
|
||||||
|
<j2seproject1:fileset dir="${build.classes.dir}"/>
|
||||||
|
</jar>
|
||||||
|
</presetdef>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
|
||||||
|
<!--
|
||||||
|
===================
|
||||||
|
COMPILATION SECTION
|
||||||
|
===================
|
||||||
|
-->
|
||||||
|
<target depends="init" name="deps-jar" unless="no.deps">
|
||||||
|
<ant antfile="${project.Core_NBI_Engine}/build.xml" inheritall="false" target="jar"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar" name="-pre-pre-compile">
|
||||||
|
<mkdir dir="${build.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target if="do.depend.true" name="-compile-depend">
|
||||||
|
<j2seproject3:depend/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
|
||||||
|
<j2seproject3:javac/>
|
||||||
|
<copy todir="${build.classes.dir}">
|
||||||
|
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
|
||||||
|
<target name="-pre-compile-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
|
||||||
|
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||||
|
<j2seproject3:force-recompile/>
|
||||||
|
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
|
||||||
|
<!--
|
||||||
|
====================
|
||||||
|
JAR BUILDING SECTION
|
||||||
|
====================
|
||||||
|
-->
|
||||||
|
<target depends="init" name="-pre-pre-jar">
|
||||||
|
<dirname file="${dist.jar}" property="dist.jar.dir"/>
|
||||||
|
<mkdir dir="${dist.jar.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-jar">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
|
||||||
|
<j2seproject1:jar/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
|
||||||
|
<j2seproject1:jar manifest="${manifest.file}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
|
||||||
|
<j2seproject1:jar manifest="${manifest.file}">
|
||||||
|
<j2seproject1:manifest>
|
||||||
|
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
|
||||||
|
</j2seproject1:manifest>
|
||||||
|
</j2seproject1:jar>
|
||||||
|
<echo>To run this application from the command line without Ant, try:</echo>
|
||||||
|
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||||
|
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||||
|
<pathconvert property="run.classpath.with.dist.jar">
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
|
||||||
|
</pathconvert>
|
||||||
|
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
|
||||||
|
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||||
|
<pathconvert property="run.classpath.without.build.classes.dir">
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
<map from="${build.classes.dir.resolved}" to=""/>
|
||||||
|
</pathconvert>
|
||||||
|
<pathconvert pathsep=" " property="jar.classpath">
|
||||||
|
<path path="${run.classpath.without.build.classes.dir}"/>
|
||||||
|
<chainedmapper>
|
||||||
|
<flattenmapper/>
|
||||||
|
<globmapper from="*" to="lib/*"/>
|
||||||
|
</chainedmapper>
|
||||||
|
</pathconvert>
|
||||||
|
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
|
||||||
|
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
|
||||||
|
<fileset dir="${build.classes.dir}"/>
|
||||||
|
<manifest>
|
||||||
|
<attribute name="Main-Class" value="${main.class}"/>
|
||||||
|
<attribute name="Class-Path" value="${jar.classpath}"/>
|
||||||
|
</manifest>
|
||||||
|
</copylibs>
|
||||||
|
<echo>To run this application from the command line without Ant, try:</echo>
|
||||||
|
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||||
|
<echo>java -jar "${dist.jar.resolved}"</echo>
|
||||||
|
</target>
|
||||||
|
<target name="-post-jar">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
|
||||||
|
<!--
|
||||||
|
=================
|
||||||
|
EXECUTION SECTION
|
||||||
|
=================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile" description="Run a main class." name="run">
|
||||||
|
<j2seproject1:java>
|
||||||
|
<customize>
|
||||||
|
<arg line="${application.args}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject1:java>
|
||||||
|
</target>
|
||||||
|
<target name="-do-not-recompile">
|
||||||
|
<property name="javac.includes.binary" value=""/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-single" name="run-single">
|
||||||
|
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
|
||||||
|
<j2seproject1:java classname="${run.class}"/>
|
||||||
|
</target>
|
||||||
|
<!--
|
||||||
|
=================
|
||||||
|
DEBUGGING SECTION
|
||||||
|
=================
|
||||||
|
-->
|
||||||
|
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
|
||||||
|
<j2seproject1:nbjpdastart name="${debug.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile" name="-debug-start-debuggee">
|
||||||
|
<j2seproject3:debug>
|
||||||
|
<customize>
|
||||||
|
<arg line="${application.args}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
|
||||||
|
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
|
||||||
|
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
|
||||||
|
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
|
||||||
|
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
|
||||||
|
<j2seproject3:debug classname="${debug.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
|
||||||
|
<target depends="init" name="-pre-debug-fix">
|
||||||
|
<fail unless="fix.includes">Must set fix.includes</fail>
|
||||||
|
<property name="javac.includes" value="${fix.includes}.java"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
|
||||||
|
<j2seproject1:nbjpdareload/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
|
||||||
|
<!--
|
||||||
|
===============
|
||||||
|
JAVADOC SECTION
|
||||||
|
===============
|
||||||
|
-->
|
||||||
|
<target depends="init" name="-javadoc-build">
|
||||||
|
<mkdir dir="${dist.javadoc.dir}"/>
|
||||||
|
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
|
||||||
|
<classpath>
|
||||||
|
<path path="${javac.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
|
||||||
|
<filename name="**/*.java"/>
|
||||||
|
</fileset>
|
||||||
|
</javadoc>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
|
||||||
|
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
JUNIT COMPILATION SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
|
||||||
|
<mkdir dir="${build.test.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile-test">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target if="do.depend.true" name="-compile-test-depend">
|
||||||
|
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
|
||||||
|
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
<copy todir="${build.test.classes.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-test">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
|
||||||
|
<target name="-pre-compile-test-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
|
||||||
|
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||||
|
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
|
||||||
|
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
<copy todir="${build.test.classes.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-test-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
|
||||||
|
<!--
|
||||||
|
=======================
|
||||||
|
JUNIT EXECUTION SECTION
|
||||||
|
=======================
|
||||||
|
-->
|
||||||
|
<target depends="init" if="have.tests" name="-pre-test-run">
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
|
||||||
|
<j2seproject3:junit testincludes="**/*Test.java"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
|
||||||
|
<fail if="tests.failed">Some tests failed; see details above.</fail>
|
||||||
|
</target>
|
||||||
|
<target depends="init" if="have.tests" name="test-report"/>
|
||||||
|
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
|
||||||
|
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
|
||||||
|
<target depends="init" if="have.tests" name="-pre-test-run-single">
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
|
||||||
|
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
|
||||||
|
<j2seproject3:junit excludes="" includes="${test.includes}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
|
||||||
|
<fail if="tests.failed">Some tests failed; see details above.</fail>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
|
||||||
|
<!--
|
||||||
|
=======================
|
||||||
|
JUNIT DEBUGGING SECTION
|
||||||
|
=======================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
|
||||||
|
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
|
||||||
|
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
|
||||||
|
<delete file="${test.report.file}"/>
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
|
||||||
|
<customize>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="test-sys-prop."/>
|
||||||
|
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<arg value="${test.class}"/>
|
||||||
|
<arg value="showoutput=true"/>
|
||||||
|
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
|
||||||
|
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
|
||||||
|
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
|
||||||
|
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
|
||||||
|
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
APPLET EXECUTION SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-single" name="run-applet">
|
||||||
|
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
|
||||||
|
<j2seproject1:java classname="sun.applet.AppletViewer">
|
||||||
|
<customize>
|
||||||
|
<arg value="${applet.url}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject1:java>
|
||||||
|
</target>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
APPLET DEBUGGING SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
|
||||||
|
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
|
||||||
|
<j2seproject3:debug classname="sun.applet.AppletViewer">
|
||||||
|
<customize>
|
||||||
|
<arg value="${applet.url}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
|
||||||
|
<!--
|
||||||
|
===============
|
||||||
|
CLEANUP SECTION
|
||||||
|
===============
|
||||||
|
-->
|
||||||
|
<target depends="init" name="deps-clean" unless="no.deps">
|
||||||
|
<ant antfile="${project.Core_NBI_Engine}/build.xml" inheritall="false" target="clean"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init" name="-do-clean">
|
||||||
|
<delete dir="${build.dir}"/>
|
||||||
|
<delete dir="${dist.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-post-clean">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
|
||||||
|
</project>
|
@ -0,0 +1,8 @@
|
|||||||
|
build.xml.data.CRC32=b5c7f54a
|
||||||
|
build.xml.script.CRC32=16bbb630
|
||||||
|
build.xml.stylesheet.CRC32=be360661
|
||||||
|
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||||
|
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||||
|
nbproject/build-impl.xml.data.CRC32=b5c7f54a
|
||||||
|
nbproject/build-impl.xml.script.CRC32=815f74ea
|
||||||
|
nbproject/build-impl.xml.stylesheet.CRC32=f1d9da08
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||||
|
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
|
||||||
|
</project-private>
|
@ -0,0 +1,62 @@
|
|||||||
|
application.title=helloworld
|
||||||
|
application.vendor=dlm198383
|
||||||
|
build.classes.dir=${build.dir}/classes
|
||||||
|
build.classes.excludes=**/*.java,**/*.form
|
||||||
|
# This directory is removed when the project is cleaned:
|
||||||
|
build.dir=build
|
||||||
|
build.generated.dir=${build.dir}/generated
|
||||||
|
# Only compile against the classpath explicitly listed here:
|
||||||
|
build.sysclasspath=ignore
|
||||||
|
build.test.classes.dir=${build.dir}/test/classes
|
||||||
|
build.test.results.dir=${build.dir}/test/results
|
||||||
|
debug.classpath=\
|
||||||
|
${run.classpath}
|
||||||
|
debug.test.classpath=\
|
||||||
|
${run.test.classpath}
|
||||||
|
# This directory is removed when the project is cleaned:
|
||||||
|
dist.dir=dist
|
||||||
|
dist.jar=${dist.dir}/helloworld.jar
|
||||||
|
dist.javadoc.dir=${dist.dir}/javadoc
|
||||||
|
excludes=
|
||||||
|
includes=**
|
||||||
|
jar.compress=false
|
||||||
|
javac.classpath=\
|
||||||
|
${reference.Core_NBI_Engine.jar}
|
||||||
|
# Space-separated list of extra javac options
|
||||||
|
javac.compilerargs=
|
||||||
|
javac.deprecation=false
|
||||||
|
javac.source=1.5
|
||||||
|
javac.target=1.5
|
||||||
|
javac.test.classpath=\
|
||||||
|
${javac.classpath}:\
|
||||||
|
${build.classes.dir}:\
|
||||||
|
${libs.junit.classpath}:\
|
||||||
|
${libs.junit_4.classpath}
|
||||||
|
javadoc.additionalparam=
|
||||||
|
javadoc.author=false
|
||||||
|
javadoc.encoding=${source.encoding}
|
||||||
|
javadoc.noindex=false
|
||||||
|
javadoc.nonavbar=false
|
||||||
|
javadoc.notree=false
|
||||||
|
javadoc.private=false
|
||||||
|
javadoc.splitindex=true
|
||||||
|
javadoc.use=true
|
||||||
|
javadoc.version=false
|
||||||
|
javadoc.windowtitle=
|
||||||
|
meta.inf.dir=${src.dir}/META-INF
|
||||||
|
platform.active=default_platform
|
||||||
|
project.Core_NBI_Engine=../../../../nbi/engine
|
||||||
|
reference.Core_NBI_Engine.jar=${project.Core_NBI_Engine}/dist/nbi-engine.jar
|
||||||
|
run.classpath=\
|
||||||
|
${javac.classpath}:\
|
||||||
|
${build.classes.dir}
|
||||||
|
# Space-separated list of JVM arguments used when running the project
|
||||||
|
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||||
|
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||||
|
run.jvmargs=
|
||||||
|
run.test.classpath=\
|
||||||
|
${javac.test.classpath}:\
|
||||||
|
${build.test.classes.dir}
|
||||||
|
source.encoding=UTF-8
|
||||||
|
src.dir=src
|
||||||
|
test.src.dir=test
|
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||||
|
<type>org.netbeans.modules.java.j2seproject</type>
|
||||||
|
<configuration>
|
||||||
|
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<name>helloworld</name>
|
||||||
|
<minimum-ant-version>1.6.5</minimum-ant-version>
|
||||||
|
<source-roots>
|
||||||
|
<root id="src.dir"/>
|
||||||
|
</source-roots>
|
||||||
|
<test-roots>
|
||||||
|
<root id="test.src.dir"/>
|
||||||
|
</test-roots>
|
||||||
|
</data>
|
||||||
|
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
|
||||||
|
<reference>
|
||||||
|
<foreign-project>Core_NBI_Engine</foreign-project>
|
||||||
|
<artifact-type>jar</artifact-type>
|
||||||
|
<script>build.xml</script>
|
||||||
|
<target>jar</target>
|
||||||
|
<clean-target>clean</clean-target>
|
||||||
|
<id>jar</id>
|
||||||
|
</reference>
|
||||||
|
</references>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
@ -0,0 +1,22 @@
|
|||||||
|
CL.app.name={product-simple-name}
|
||||||
|
CL.desktop.shortcut.name={product-name}
|
||||||
|
CL.desktop.shortcut.description=
|
||||||
|
CL.desktop.shortcut.path=
|
||||||
|
CL.unix.icon.name={product-icon-name}
|
||||||
|
CL.unix.icon.resource=org/mycompany/{product-icon-name}
|
||||||
|
|
||||||
|
|
||||||
|
CL.start.menu.shortcut.name={product-name}
|
||||||
|
CL.start.menu.shortcut.name.macosx={product-name}
|
||||||
|
CL.start.menu.shortcut.description=
|
||||||
|
CL.start.menu.shortcut.path=
|
||||||
|
|
||||||
|
CL.install.desktop=Creating shortcut on desktop
|
||||||
|
CL.install.start.menu=Creating shortcut in start menu
|
||||||
|
CL.uninstall.start.menu=Removing Start Menu entries
|
||||||
|
CL.uninstall.desktop=Removing desktop shortcut
|
||||||
|
CL.uninstall.remove.userdir=Removing {product-name} userdir
|
||||||
|
|
||||||
|
CL.uninstall.error.start.menu=Cannot remove desktop shortcut
|
||||||
|
CL.uninstall.error.desktop=Cannot remove Start Menu entries
|
||||||
|
|
@ -0,0 +1,451 @@
|
|||||||
|
package org.mycompany;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import org.mycompany.wizard.panels.HelloWorldPanel;
|
||||||
|
import org.mycompany.installer.utils.applications.NetBeansRCPUtils;
|
||||||
|
import org.netbeans.installer.product.components.ProductConfigurationLogic;
|
||||||
|
import org.netbeans.installer.product.components.Product;
|
||||||
|
import org.netbeans.installer.utils.FileUtils;
|
||||||
|
import org.netbeans.installer.utils.helper.RemovalMode;
|
||||||
|
import org.netbeans.installer.utils.exceptions.InitializationException;
|
||||||
|
import org.netbeans.installer.utils.exceptions.InstallationException;
|
||||||
|
import org.netbeans.installer.utils.exceptions.UninstallationException;
|
||||||
|
import org.netbeans.installer.utils.progress.Progress;
|
||||||
|
import org.netbeans.installer.utils.system.shortcut.FileShortcut;
|
||||||
|
import org.netbeans.installer.utils.system.shortcut.LocationType;
|
||||||
|
import org.netbeans.installer.utils.system.shortcut.Shortcut;
|
||||||
|
import org.netbeans.installer.utils.SystemUtils;
|
||||||
|
import org.netbeans.installer.utils.LogManager;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.StreamUtils;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.exceptions.NativeException;
|
||||||
|
import org.netbeans.installer.wizard.Wizard;
|
||||||
|
import org.netbeans.installer.wizard.components.WizardComponent;
|
||||||
|
|
||||||
|
public class ConfigurationLogic extends ProductConfigurationLogic {
|
||||||
|
|
||||||
|
private List<WizardComponent> wizardComponents;
|
||||||
|
|
||||||
|
// constructor //////////////////////////////////////////////////////////////////
|
||||||
|
public ConfigurationLogic() throws InitializationException {
|
||||||
|
wizardComponents = Wizard.loadWizardComponents(
|
||||||
|
WIZARD_COMPONENTS_URI,
|
||||||
|
getClass().getClassLoader());
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<WizardComponent> getWizardComponents() {
|
||||||
|
return wizardComponents;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean allowModifyMode() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void install(Progress progress) throws InstallationException {
|
||||||
|
final Product product = getProduct();
|
||||||
|
final File installLocation = product.getInstallationLocation();
|
||||||
|
//final FilesList filesList = product.getInstalledFiles();
|
||||||
|
String appName=ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name");
|
||||||
|
|
||||||
|
if (SystemUtils.isMacOS()) {
|
||||||
|
//normen: use parent folder of install dir for icon
|
||||||
|
File f = new File(installLocation.getParentFile(), ICON_MACOSX);
|
||||||
|
if(!f.exists()) {
|
||||||
|
try {
|
||||||
|
FileUtils.writeFile(f,
|
||||||
|
ResourceUtils.getResource(ICON_MACOSX_RESOURCE,
|
||||||
|
getClass().getClassLoader()));
|
||||||
|
getProduct().getInstalledFiles().add(f);
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogManager.log(
|
||||||
|
"... cannot handle icns icon " + f, e); // NOI18N
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//normen: rename executable
|
||||||
|
File shortcut=new File(installLocation.getParentFile().getParent()+"/MacOS/executable");
|
||||||
|
if(shortcut.exists()){
|
||||||
|
shortcut.renameTo(new File(installLocation.getParentFile().getParent()+"/MacOS/"+appName));
|
||||||
|
}
|
||||||
|
|
||||||
|
//normen: replace icon + app in Info.plist
|
||||||
|
try {
|
||||||
|
File plist=new File(installLocation.getParentFile().getParentFile(),"Info.plist");
|
||||||
|
FileUtils.modifyFile(plist, "icon.icns", appName+".icns");
|
||||||
|
FileUtils.modifyFile(plist, "executable", appName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_DESKTOP_SHORTCUT_PROPERTY))) {
|
||||||
|
LogManager.logIndent(
|
||||||
|
"creating the desktop shortcut for the application"); // NOI18N
|
||||||
|
if (!SystemUtils.isMacOS()) {
|
||||||
|
try {
|
||||||
|
progress.setDetail(getString("CL.install.desktop")); // NOI18N
|
||||||
|
|
||||||
|
if (SystemUtils.isCurrentUserAdmin()) {
|
||||||
|
LogManager.log(
|
||||||
|
"... current user is an administrator " + // NOI18N
|
||||||
|
"-- creating the shortcut for all users"); // NOI18N
|
||||||
|
|
||||||
|
SystemUtils.createShortcut(
|
||||||
|
getDesktopShortcut(installLocation),
|
||||||
|
LocationType.ALL_USERS_DESKTOP);
|
||||||
|
|
||||||
|
product.setProperty(
|
||||||
|
DESKTOP_SHORTCUT_LOCATION_PROPERTY,
|
||||||
|
ALL_USERS_PROPERTY_VALUE);
|
||||||
|
} else {
|
||||||
|
LogManager.log(
|
||||||
|
"... current user is an ordinary user " + // NOI18N
|
||||||
|
"-- creating the shortcut for the current " + // NOI18N
|
||||||
|
"user only"); // NOI18N
|
||||||
|
|
||||||
|
SystemUtils.createShortcut(
|
||||||
|
getDesktopShortcut(installLocation),
|
||||||
|
LocationType.CURRENT_USER_DESKTOP);
|
||||||
|
|
||||||
|
getProduct().setProperty(
|
||||||
|
DESKTOP_SHORTCUT_LOCATION_PROPERTY,
|
||||||
|
CURRENT_USER_PROPERTY_VALUE);
|
||||||
|
}
|
||||||
|
} catch (NativeException e) {
|
||||||
|
LogManager.unindent();
|
||||||
|
|
||||||
|
LogManager.log(
|
||||||
|
getString("CL.install.error.desktop"), // NOI18N
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LogManager.log(
|
||||||
|
"... skipping this step as we're on Mac OS"); // NOI18N
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LogManager.logUnindent(
|
||||||
|
"... done"); // NOI18N
|
||||||
|
|
||||||
|
/////////////////////////////////////////////
|
||||||
|
// create start menu shortcut
|
||||||
|
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_START_MENU_SHORTCUT_PROPERTY))) {
|
||||||
|
LogManager.logIndent(
|
||||||
|
"creating the start menu shortcut for the application"); // NOI18N
|
||||||
|
try {
|
||||||
|
progress.setDetail(getString("CL.install.start.menu")); // NOI18N
|
||||||
|
|
||||||
|
if (SystemUtils.isCurrentUserAdmin()) {
|
||||||
|
LogManager.log(
|
||||||
|
"... current user is an administrator " + // NOI18N
|
||||||
|
"-- creating the shortcut for all users"); // NOI18N
|
||||||
|
|
||||||
|
SystemUtils.createShortcut(
|
||||||
|
getStartMenuShortcut(installLocation),
|
||||||
|
LocationType.ALL_USERS_START_MENU);
|
||||||
|
|
||||||
|
getProduct().setProperty(
|
||||||
|
START_MENU_SHORTCUT_LOCATION_PROPERTY,
|
||||||
|
ALL_USERS_PROPERTY_VALUE);
|
||||||
|
} else {
|
||||||
|
LogManager.log(
|
||||||
|
"... current user is an ordinary user " + // NOI18N
|
||||||
|
"-- creating the shortcut for the current " + // NOI18N
|
||||||
|
"user only"); // NOI18N
|
||||||
|
|
||||||
|
SystemUtils.createShortcut(
|
||||||
|
getStartMenuShortcut(installLocation),
|
||||||
|
LocationType.CURRENT_USER_START_MENU);
|
||||||
|
|
||||||
|
getProduct().setProperty(
|
||||||
|
START_MENU_SHORTCUT_LOCATION_PROPERTY,
|
||||||
|
CURRENT_USER_PROPERTY_VALUE);
|
||||||
|
}
|
||||||
|
} catch (NativeException e) {
|
||||||
|
LogManager.log(
|
||||||
|
getString("CL.install.error.start.menu"), // NOI18N
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
LogManager.logUnindent(
|
||||||
|
"... done"); // NOI18N
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void uninstall(Progress progress) throws UninstallationException {
|
||||||
|
final Product product = getProduct();
|
||||||
|
final File installLocation = product.getInstallationLocation();
|
||||||
|
|
||||||
|
//NetBeansUtils.warnNetbeansRunning(installLocation);
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_START_MENU_SHORTCUT_PROPERTY))) {
|
||||||
|
try {
|
||||||
|
progress.setDetail(getString("CL.uninstall.start.menu")); // NOI18N
|
||||||
|
|
||||||
|
final String shortcutLocation =
|
||||||
|
getProduct().getProperty(START_MENU_SHORTCUT_LOCATION_PROPERTY);
|
||||||
|
|
||||||
|
if ((shortcutLocation == null)
|
||||||
|
|| shortcutLocation.equals(CURRENT_USER_PROPERTY_VALUE)) {
|
||||||
|
SystemUtils.removeShortcut(
|
||||||
|
getStartMenuShortcut(installLocation),
|
||||||
|
LocationType.CURRENT_USER_START_MENU,
|
||||||
|
true);
|
||||||
|
} else {
|
||||||
|
SystemUtils.removeShortcut(
|
||||||
|
getStartMenuShortcut(installLocation),
|
||||||
|
LocationType.ALL_USERS_START_MENU,
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
} catch (NativeException e) {
|
||||||
|
LogManager.log(
|
||||||
|
getString("CL.uninstall.error.start.menu"), // NOI18N
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
if (Boolean.parseBoolean(getProperty(HelloWorldPanel.CREATE_DESKTOP_SHORTCUT_PROPERTY))) {
|
||||||
|
if (!SystemUtils.isMacOS()) {
|
||||||
|
try {
|
||||||
|
progress.setDetail(getString("CL.uninstall.desktop")); // NOI18N
|
||||||
|
|
||||||
|
final String shortcutLocation = getProduct().getProperty(
|
||||||
|
DESKTOP_SHORTCUT_LOCATION_PROPERTY);
|
||||||
|
|
||||||
|
if ((shortcutLocation == null)
|
||||||
|
|| shortcutLocation.equals(CURRENT_USER_PROPERTY_VALUE)) {
|
||||||
|
SystemUtils.removeShortcut(
|
||||||
|
getDesktopShortcut(installLocation),
|
||||||
|
LocationType.CURRENT_USER_DESKTOP,
|
||||||
|
false);
|
||||||
|
} else {
|
||||||
|
SystemUtils.removeShortcut(
|
||||||
|
getDesktopShortcut(installLocation),
|
||||||
|
LocationType.ALL_USERS_DESKTOP,
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
} catch (NativeException e) {
|
||||||
|
LogManager.log(
|
||||||
|
getString("CL.uninstall.error.desktop"), // NOI18N
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (Boolean.getBoolean("remove.app.userdir")) {
|
||||||
|
try {
|
||||||
|
progress.setDetail(getString("CL.uninstall.remove.userdir")); // NOI18N
|
||||||
|
LogManager.logIndent("Removing application`s userdir... ");
|
||||||
|
File userDir = NetBeansRCPUtils.getApplicationUserDirFile(installLocation);
|
||||||
|
LogManager.log("... application userdir location : " + userDir);
|
||||||
|
if (FileUtils.exists(userDir) && FileUtils.canWrite(userDir)) {
|
||||||
|
FileUtils.deleteFile(userDir, true);
|
||||||
|
FileUtils.deleteEmptyParents(userDir);
|
||||||
|
}
|
||||||
|
LogManager.log("... application userdir totally removed");
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogManager.log("Can`t remove application userdir", e);
|
||||||
|
} finally {
|
||||||
|
LogManager.unindent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//remove cluster/update files
|
||||||
|
/*
|
||||||
|
try {
|
||||||
|
progress.setDetail(getString("CL.uninstall.update.files")); // NOI18N
|
||||||
|
for(String cluster : CLUSTERS) {
|
||||||
|
File updateDir = new File(installLocation, cluster + File.separator + "update");
|
||||||
|
if ( updateDir.exists()) {
|
||||||
|
FileUtils.deleteFile(updateDir, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogManager.log(
|
||||||
|
getString("CL.uninstall.error.update.files"), // NOI18N
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
progress.setPercentage(Progress.COMPLETE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getExecutable() {
|
||||||
|
if (SystemUtils.isWindows()) {
|
||||||
|
return EXECUTABLE_WINDOWS;
|
||||||
|
} else {
|
||||||
|
return EXECUTABLE_UNIX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getIcon() {
|
||||||
|
if (SystemUtils.isWindows()) {
|
||||||
|
return ICON_WINDOWS;
|
||||||
|
} else if (SystemUtils.isMacOS()) {
|
||||||
|
return ICON_MACOSX;
|
||||||
|
} else {
|
||||||
|
return ICON_UNIX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public RemovalMode getRemovalMode() {
|
||||||
|
return RemovalMode.LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean registerInSystem() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean requireLegalArtifactSaving() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean requireDotAppForMacOs() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean wrapForMacOs() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Shortcut getDesktopShortcut(final File directory) {
|
||||||
|
return getShortcut(
|
||||||
|
getStrings("CL.desktop.shortcut.name"), // NOI18N
|
||||||
|
getStrings("CL.desktop.shortcut.description"), // NOI18N
|
||||||
|
getString("CL.desktop.shortcut.path"), // NOI18N
|
||||||
|
directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Shortcut getStartMenuShortcut(final File directory) {
|
||||||
|
if (SystemUtils.isMacOS()) {
|
||||||
|
return getShortcut(
|
||||||
|
getStrings("CL.start.menu.shortcut.name.macosx"), // NOI18N
|
||||||
|
getStrings("CL.start.menu.shortcut.description"), // NOI18N
|
||||||
|
getString("CL.start.menu.shortcut.path"), // NOI18N
|
||||||
|
directory);
|
||||||
|
} else {
|
||||||
|
return getShortcut(
|
||||||
|
getStrings("CL.start.menu.shortcut.name"), // NOI18N
|
||||||
|
getStrings("CL.start.menu.shortcut.description"), // NOI18N
|
||||||
|
getString("CL.start.menu.shortcut.path"), // NOI18N
|
||||||
|
directory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Shortcut getShortcut(
|
||||||
|
final Map<Locale, String> names,
|
||||||
|
final Map<Locale, String> descriptions,
|
||||||
|
final String relativePath,
|
||||||
|
final File location) {
|
||||||
|
final File icon;
|
||||||
|
final File executable;
|
||||||
|
|
||||||
|
if (SystemUtils.isWindows()) {
|
||||||
|
icon = new File(location, ICON_WINDOWS);
|
||||||
|
} else if (SystemUtils.isMacOS()) {
|
||||||
|
icon = new File(location, ICON_MACOSX);
|
||||||
|
} else {
|
||||||
|
icon = new File(location, ICON_UNIX);
|
||||||
|
LogManager.log("... icon file: " + icon);
|
||||||
|
if(!FileUtils.exists(icon)) {
|
||||||
|
LogManager.log("... icon file does not exist: " + icon);
|
||||||
|
InputStream is = null;
|
||||||
|
is = ResourceUtils.getResource(ICON_UNIX_RESOURCE, this.getClass().getClassLoader());
|
||||||
|
if(is!=null) {
|
||||||
|
FileOutputStream fos =null;
|
||||||
|
try {
|
||||||
|
fos = new FileOutputStream(icon);
|
||||||
|
StreamUtils.transferData(is, fos);
|
||||||
|
is.close();
|
||||||
|
fos.close();
|
||||||
|
getProduct().getInstalledFiles().add(icon);
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogManager.log(e);
|
||||||
|
} finally {
|
||||||
|
if(fos!=null) {
|
||||||
|
try {
|
||||||
|
fos.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SystemUtils.isWindows()) {
|
||||||
|
executable = new File(location, EXECUTABLE_WINDOWS);
|
||||||
|
} else {
|
||||||
|
executable = new File(location, EXECUTABLE_UNIX);
|
||||||
|
}
|
||||||
|
final String name = names.get(new Locale(StringUtils.EMPTY_STRING));
|
||||||
|
final FileShortcut shortcut = new FileShortcut(name, executable);
|
||||||
|
shortcut.setNames(names);
|
||||||
|
shortcut.setDescriptions(descriptions);
|
||||||
|
shortcut.setCategories(SHORTCUT_CATEGORIES);
|
||||||
|
shortcut.setFileName(SHORTCUT_FILENAME);
|
||||||
|
shortcut.setIcon(icon);
|
||||||
|
shortcut.setRelativePath(relativePath);
|
||||||
|
shortcut.setWorkingDirectory(location);
|
||||||
|
shortcut.setModifyPath(true);
|
||||||
|
|
||||||
|
return shortcut;
|
||||||
|
}
|
||||||
|
public static final String SHORTCUT_FILENAME =
|
||||||
|
ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".desktop"; // NOI18N
|
||||||
|
public static final String[] SHORTCUT_CATEGORIES = new String[]{
|
||||||
|
"Application"
|
||||||
|
};
|
||||||
|
public static final String BIN_SUBDIR =
|
||||||
|
"bin/";
|
||||||
|
public static final String EXECUTABLE_WINDOWS =
|
||||||
|
BIN_SUBDIR
|
||||||
|
+ ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".exe"; // NOI18N
|
||||||
|
public static final String EXECUTABLE_UNIX =
|
||||||
|
BIN_SUBDIR
|
||||||
|
+ ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name"); // NOI18N
|
||||||
|
public static final String ICON_WINDOWS =
|
||||||
|
EXECUTABLE_WINDOWS;
|
||||||
|
public static final String ICON_UNIX =
|
||||||
|
ResourceUtils.getString(ConfigurationLogic.class,
|
||||||
|
"CL.unix.icon.name"); // NOI18N
|
||||||
|
public static final String ICON_UNIX_RESOURCE =
|
||||||
|
ResourceUtils.getString(ConfigurationLogic.class,
|
||||||
|
"CL.unix.icon.resource"); // NOI18N
|
||||||
|
public static final String ICON_MACOSX =
|
||||||
|
ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".icns"; // NOI18N
|
||||||
|
public static final String ICON_MACOSX_RESOURCE =
|
||||||
|
"org/mycompany/" + ResourceUtils.getString(ConfigurationLogic.class, "CL.app.name") + ".icns"; // NOI18N
|
||||||
|
public static final String WIZARD_COMPONENTS_URI =
|
||||||
|
"resource:" + // NOI18N
|
||||||
|
"org/mycompany/wizard.xml"; // NOI18N
|
||||||
|
private static final String DESKTOP_SHORTCUT_LOCATION_PROPERTY =
|
||||||
|
"desktop.shortcut.location"; // NOI18N
|
||||||
|
private static final String START_MENU_SHORTCUT_LOCATION_PROPERTY =
|
||||||
|
"start.menu.shortcut.location"; // NOI18N
|
||||||
|
private static final String ALL_USERS_PROPERTY_VALUE =
|
||||||
|
"all.users"; // NOI18N
|
||||||
|
private static final String CURRENT_USER_PROPERTY_VALUE =
|
||||||
|
"current.user"; // NOI18N
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wizard-components.xsd">
|
||||||
|
<component class="org.mycompany.wizard.panels.HelloWorldPanel"/>
|
||||||
|
</wizard>
|
@ -0,0 +1,51 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# HelloWorldPanel.java
|
||||||
|
P.title={product-name} Installation
|
||||||
|
P.description=Choose destination folder.
|
||||||
|
P.destination.label.text=&Install {product-name} to:
|
||||||
|
P.destination.button.text=B&rowse.....
|
||||||
|
|
||||||
|
P.create.desktop.shortcut=Create Desktop icon
|
||||||
|
P.create.start.menu.shortcut.windows=Create Start menu entry
|
||||||
|
P.create.start.menu.shortcut.unix=Create shortcut in Applications menu
|
||||||
|
P.create.start.menu.shortcut.macosx=Create icon in Dock
|
||||||
|
|
@ -0,0 +1,184 @@
|
|||||||
|
package org.mycompany.wizard.panels;
|
||||||
|
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.SystemUtils;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiCheckBox;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.DestinationPanel;
|
||||||
|
import org.netbeans.installer.wizard.containers.SwingContainer;
|
||||||
|
import org.netbeans.installer.wizard.ui.SwingUi;
|
||||||
|
import org.netbeans.installer.wizard.ui.WizardUi;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class HelloWorldPanel extends DestinationPanel {
|
||||||
|
|
||||||
|
public HelloWorldPanel() {
|
||||||
|
setProperty(TITLE_PROPERTY,
|
||||||
|
DEFAULT_TITLE);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY,
|
||||||
|
DEFAULT_DESCRIPTION);
|
||||||
|
|
||||||
|
setProperty(DESTINATION_LABEL_TEXT_PROPERTY,
|
||||||
|
DEFAULT_DESTINATION_LABEL_TEXT);
|
||||||
|
setProperty(DESTINATION_BUTTON_TEXT_PROPERTY,
|
||||||
|
DEFAULT_DESTINATION_BUTTON_TEXT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WizardUi getWizardUi() {
|
||||||
|
if (wizardUi == null) {
|
||||||
|
wizardUi = new HelloWorldPanelUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wizardUi;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize() {
|
||||||
|
super.initialize();
|
||||||
|
if(getWizard().getProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY) == null) {
|
||||||
|
getWizard().setProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY, "" + true);
|
||||||
|
}
|
||||||
|
if(getWizard().getProperty(CREATE_START_MENU_SHORTCUT_PROPERTY) == null) {
|
||||||
|
getWizard().setProperty(CREATE_START_MENU_SHORTCUT_PROPERTY, "" + true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static class HelloWorldPanelUi extends DestinationPanelUi {
|
||||||
|
|
||||||
|
protected HelloWorldPanel panel;
|
||||||
|
|
||||||
|
public HelloWorldPanelUi(HelloWorldPanel panel) {
|
||||||
|
super(panel);
|
||||||
|
|
||||||
|
|
||||||
|
this.panel = panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SwingUi getSwingUi(SwingContainer container) {
|
||||||
|
if (swingUi == null) {
|
||||||
|
swingUi = new HelloWorldPanelSwingUi(panel, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getSwingUi(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class HelloWorldPanelSwingUi extends DestinationPanelSwingUi {
|
||||||
|
|
||||||
|
protected HelloWorldPanel panel;
|
||||||
|
private NbiCheckBox desktopShortcutComboBox;
|
||||||
|
private NbiCheckBox startMenuShortcutComboBox;
|
||||||
|
|
||||||
|
public HelloWorldPanelSwingUi(
|
||||||
|
final HelloWorldPanel panel,
|
||||||
|
final SwingContainer container) {
|
||||||
|
super(panel, container);
|
||||||
|
|
||||||
|
this.panel = panel;
|
||||||
|
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected ////////////////////////////////////////////////////////////////
|
||||||
|
@Override
|
||||||
|
protected void initialize() {
|
||||||
|
desktopShortcutComboBox.setText(CREATE_DESKTOP_SHORTCUT_NAME);
|
||||||
|
desktopShortcutComboBox.setSelected(false);
|
||||||
|
if(Boolean.parseBoolean(panel.getWizard().getProperty(CREATE_DESKTOP_SHORTCUT_PROPERTY))) {
|
||||||
|
desktopShortcutComboBox.doClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
startMenuShortcutComboBox.setText(
|
||||||
|
SystemUtils.isWindows() ? CREATE_START_MENU_SHORTCUT_NAME_WINDOWS :
|
||||||
|
(SystemUtils.isMacOS() ? CREATE_START_MENU_SHORTCUT_NAME_MAC :
|
||||||
|
CREATE_START_MENU_SHORTCUT_NAME_UNIX));
|
||||||
|
startMenuShortcutComboBox.setSelected(false);
|
||||||
|
if(Boolean.parseBoolean(panel.getWizard().getProperty(CREATE_START_MENU_SHORTCUT_PROPERTY))) {
|
||||||
|
startMenuShortcutComboBox.doClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
super.initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void saveInput() {
|
||||||
|
super.saveInput();
|
||||||
|
panel.getWizard().setProperty(
|
||||||
|
CREATE_DESKTOP_SHORTCUT_PROPERTY,
|
||||||
|
StringUtils.EMPTY_STRING + desktopShortcutComboBox.isSelected());
|
||||||
|
|
||||||
|
panel.getWizard().setProperty(
|
||||||
|
CREATE_START_MENU_SHORTCUT_PROPERTY,
|
||||||
|
StringUtils.EMPTY_STRING + startMenuShortcutComboBox.isSelected());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String validateInput() {
|
||||||
|
String errorMessage = super.validateInput();
|
||||||
|
return errorMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
// private //////////////////////////////////////////////////////////////////
|
||||||
|
private void initComponents() {
|
||||||
|
// selectedLocationField ////////////////////////////////////////////////
|
||||||
|
desktopShortcutComboBox = new NbiCheckBox();
|
||||||
|
startMenuShortcutComboBox = new NbiCheckBox();
|
||||||
|
|
||||||
|
// this /////////////////////////////////////////////////////////////////
|
||||||
|
add(desktopShortcutComboBox, new GridBagConstraints(
|
||||||
|
0, 2, // x, y
|
||||||
|
2, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(15, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(startMenuShortcutComboBox, new GridBagConstraints(
|
||||||
|
0, 3, // x, y
|
||||||
|
2, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(7, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
public static final String DEFAULT_TITLE =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.title"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESCRIPTION =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.description"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESTINATION_LABEL_TEXT =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.destination.label.text"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESTINATION_BUTTON_TEXT =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.destination.button.text"); // NOI18N
|
||||||
|
public static final String CREATE_DESKTOP_SHORTCUT_NAME =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.create.desktop.shortcut"); // NOI18N
|
||||||
|
public static final String CREATE_START_MENU_SHORTCUT_NAME_WINDOWS =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.create.start.menu.shortcut.windows"); // NOI18N
|
||||||
|
public static final String CREATE_START_MENU_SHORTCUT_NAME_UNIX =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.create.start.menu.shortcut.unix"); // NOI18N
|
||||||
|
public static final String CREATE_START_MENU_SHORTCUT_NAME_MAC =
|
||||||
|
ResourceUtils.getString(HelloWorldPanel.class,
|
||||||
|
"P.create.start.menu.shortcut.macosx"); // NOI18N
|
||||||
|
public static final String CREATE_DESKTOP_SHORTCUT_PROPERTY =
|
||||||
|
"create.desktop.shortcut";
|
||||||
|
public static final String CREATE_START_MENU_SHORTCUT_PROPERTY =
|
||||||
|
"create.start.menu.shortcut";
|
||||||
|
}
|
41
sdk/nbi/stub/ext/engine/build.properties
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
jar.contents.list=data/engine.list
|
||||||
|
jar.contents.includes=native/** org/** com/apple/** data/clioptions.list data/engine*.properties
|
73
sdk/nbi/stub/ext/engine/build.xml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project name="Hello_World_Installer" default="default" basedir=".">
|
||||||
|
<import file="nbproject/build-impl.xml"/>
|
||||||
|
|
||||||
|
<property file="build.properties"/>
|
||||||
|
|
||||||
|
<target name="-post-compile" depends="-unjar-core-engine,create-jar-contents-list"/>
|
||||||
|
<target name="-unjar-core-engine">
|
||||||
|
<!-- Add the contents of the core engine to the engine we're building -->
|
||||||
|
<unjar
|
||||||
|
src="${reference.NBI_Engine.jar}"
|
||||||
|
dest="${build.classes.dir}"
|
||||||
|
overwrite="false"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="create-jar-contents-list">
|
||||||
|
<pathconvert property="build.classes.dir.normalized" dirsep="/">
|
||||||
|
<path location="${build.classes.dir}"/>
|
||||||
|
</pathconvert>
|
||||||
|
<pathconvert pathsep="${line.separator}" property="engine.files" dirsep="/">
|
||||||
|
<fileset dir="${build.classes.dir}" includes="${jar.contents.includes}"/>
|
||||||
|
<mapper>
|
||||||
|
<chainedmapper>
|
||||||
|
<globmapper handledirsep="true" from="${build.classes.dir.normalized}/*" to="*"/>
|
||||||
|
</chainedmapper>
|
||||||
|
</mapper>
|
||||||
|
</pathconvert>
|
||||||
|
<echo file="${build.classes.dir}/${jar.contents.list}">${engine.files}</echo>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-post-jar">
|
||||||
|
<delete dir="${dist.dir}/lib"/>
|
||||||
|
</target>
|
||||||
|
</project>
|
2
sdk/nbi/stub/ext/engine/manifest.mf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
Main-Class: org.netbeans.installer.Installer
|
646
sdk/nbi/stub/ext/engine/nbproject/build-impl.xml
Normal file
@ -0,0 +1,646 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
*** GENERATED FROM project.xml - DO NOT EDIT ***
|
||||||
|
*** EDIT ../build.xml INSTEAD ***
|
||||||
|
|
||||||
|
For the purpose of easier reading the script
|
||||||
|
is divided into following sections:
|
||||||
|
|
||||||
|
- initialization
|
||||||
|
- compilation
|
||||||
|
- jar
|
||||||
|
- execution
|
||||||
|
- debugging
|
||||||
|
- javadoc
|
||||||
|
- junit compilation
|
||||||
|
- junit execution
|
||||||
|
- junit debugging
|
||||||
|
- applet
|
||||||
|
- cleanup
|
||||||
|
|
||||||
|
-->
|
||||||
|
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="HelloWorld_Engine-impl">
|
||||||
|
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
|
||||||
|
<!--
|
||||||
|
======================
|
||||||
|
INITIALIZATION SECTION
|
||||||
|
======================
|
||||||
|
-->
|
||||||
|
<target name="-pre-init">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init" name="-init-private">
|
||||||
|
<property file="nbproject/private/config.properties"/>
|
||||||
|
<property file="nbproject/private/configs/${config}.properties"/>
|
||||||
|
<property file="nbproject/private/private.properties"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private" name="-init-user">
|
||||||
|
<property file="${user.properties.file}"/>
|
||||||
|
<!-- The two properties below are usually overridden -->
|
||||||
|
<!-- by the active platform. Just a fallback. -->
|
||||||
|
<property name="default.javac.source" value="1.4"/>
|
||||||
|
<property name="default.javac.target" value="1.4"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
|
||||||
|
<property file="nbproject/configs/${config}.properties"/>
|
||||||
|
<property file="nbproject/project.properties"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
|
||||||
|
<available file="${manifest.file}" property="manifest.available"/>
|
||||||
|
<condition property="manifest.available+main.class">
|
||||||
|
<and>
|
||||||
|
<isset property="manifest.available"/>
|
||||||
|
<isset property="main.class"/>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${main.class}" arg2="" trim="true"/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="manifest.available+main.class+mkdist.available">
|
||||||
|
<and>
|
||||||
|
<istrue value="${manifest.available+main.class}"/>
|
||||||
|
<isset property="libs.CopyLibs.classpath"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="have.tests">
|
||||||
|
<or>
|
||||||
|
<available file="${test.src.dir}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="have.sources">
|
||||||
|
<or>
|
||||||
|
<available file="${src.dir}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="netbeans.home+have.tests">
|
||||||
|
<and>
|
||||||
|
<isset property="netbeans.home"/>
|
||||||
|
<isset property="have.tests"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="no.javadoc.preview">
|
||||||
|
<and>
|
||||||
|
<isset property="javadoc.preview"/>
|
||||||
|
<isfalse value="${javadoc.preview}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="run.jvmargs" value=""/>
|
||||||
|
<property name="javac.compilerargs" value=""/>
|
||||||
|
<property name="work.dir" value="${basedir}"/>
|
||||||
|
<condition property="no.deps">
|
||||||
|
<and>
|
||||||
|
<istrue value="${no.dependencies}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="javac.debug" value="true"/>
|
||||||
|
<property name="javadoc.preview" value="true"/>
|
||||||
|
<property name="application.args" value=""/>
|
||||||
|
<property name="source.encoding" value="${file.encoding}"/>
|
||||||
|
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
|
||||||
|
<and>
|
||||||
|
<isset property="javadoc.encoding"/>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${javadoc.encoding}" arg2=""/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="javadoc.encoding.used" value="${source.encoding}"/>
|
||||||
|
<property name="includes" value="**"/>
|
||||||
|
<property name="excludes" value=""/>
|
||||||
|
<property name="do.depend" value="false"/>
|
||||||
|
<condition property="do.depend.true">
|
||||||
|
<istrue value="${do.depend}"/>
|
||||||
|
</condition>
|
||||||
|
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
|
||||||
|
<and>
|
||||||
|
<isset property="jaxws.endorsed.dir"/>
|
||||||
|
<available file="nbproject/jaxws-build.xml"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target name="-post-init">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
|
||||||
|
<fail unless="src.dir">Must set src.dir</fail>
|
||||||
|
<fail unless="test.src.dir">Must set test.src.dir</fail>
|
||||||
|
<fail unless="build.dir">Must set build.dir</fail>
|
||||||
|
<fail unless="dist.dir">Must set dist.dir</fail>
|
||||||
|
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
|
||||||
|
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
|
||||||
|
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
|
||||||
|
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
|
||||||
|
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
|
||||||
|
<fail unless="dist.jar">Must set dist.jar</fail>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-property">
|
||||||
|
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute name="name"/>
|
||||||
|
<attribute name="value"/>
|
||||||
|
<sequential>
|
||||||
|
<property name="@{name}" value="${@{value}}"/>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-javac">
|
||||||
|
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${src.dir}" name="srcdir"/>
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<attribute default="${javac.classpath}" name="classpath"/>
|
||||||
|
<attribute default="${includes}" name="includes"/>
|
||||||
|
<attribute default="${excludes}" name="excludes"/>
|
||||||
|
<attribute default="${javac.debug}" name="debug"/>
|
||||||
|
<attribute default="/does/not/exist" name="sourcepath"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
|
||||||
|
<customize/>
|
||||||
|
</javac>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${src.dir}" name="srcdir"/>
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<attribute default="${javac.classpath}" name="classpath"/>
|
||||||
|
<sequential>
|
||||||
|
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
</depend>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<sequential>
|
||||||
|
<fail unless="javac.includes">Must set javac.includes</fail>
|
||||||
|
<pathconvert pathsep="," property="javac.includes.binary">
|
||||||
|
<path>
|
||||||
|
<filelist dir="@{destdir}" files="${javac.includes}"/>
|
||||||
|
</path>
|
||||||
|
<globmapper from="*.java" to="*.class"/>
|
||||||
|
</pathconvert>
|
||||||
|
<delete>
|
||||||
|
<files includes="${javac.includes.binary}"/>
|
||||||
|
</delete>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-junit">
|
||||||
|
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${includes}" name="includes"/>
|
||||||
|
<attribute default="${excludes}" name="excludes"/>
|
||||||
|
<attribute default="**" name="testincludes"/>
|
||||||
|
<sequential>
|
||||||
|
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
|
||||||
|
<batchtest todir="${build.test.results.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
|
||||||
|
<filename name="@{testincludes}"/>
|
||||||
|
</fileset>
|
||||||
|
</batchtest>
|
||||||
|
<classpath>
|
||||||
|
<path path="${run.test.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="test-sys-prop."/>
|
||||||
|
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<formatter type="brief" usefile="false"/>
|
||||||
|
<formatter type="xml"/>
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
</junit>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target depends="-init-debug-args" name="-init-macrodef-nbjpda">
|
||||||
|
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${main.class}" name="name"/>
|
||||||
|
<attribute default="${debug.classpath}" name="classpath"/>
|
||||||
|
<attribute default="" name="stopclassname"/>
|
||||||
|
<sequential>
|
||||||
|
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
</nbjpdastart>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${build.classes.dir}" name="dir"/>
|
||||||
|
<sequential>
|
||||||
|
<nbjpdareload>
|
||||||
|
<fileset dir="@{dir}" includes="${fix.classes}">
|
||||||
|
<include name="${fix.includes}*.class"/>
|
||||||
|
</fileset>
|
||||||
|
</nbjpdareload>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-debug-args">
|
||||||
|
<property name="version-output" value="java version "${ant.java.version}"/>
|
||||||
|
<condition property="have-jdk-older-than-1.4">
|
||||||
|
<or>
|
||||||
|
<contains string="${version-output}" substring="java version "1.0"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.1"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.2"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.3"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
|
||||||
|
<istrue value="${have-jdk-older-than-1.4}"/>
|
||||||
|
</condition>
|
||||||
|
<condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
|
||||||
|
<os family="windows"/>
|
||||||
|
</condition>
|
||||||
|
<condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
|
||||||
|
<isset property="debug.transport"/>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target depends="-init-debug-args" name="-init-macrodef-debug">
|
||||||
|
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${main.class}" name="classname"/>
|
||||||
|
<attribute default="${debug.classpath}" name="classpath"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<java classname="@{classname}" dir="${work.dir}" fork="true">
|
||||||
|
<jvmarg line="${debug-args-line}"/>
|
||||||
|
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="run-sys-prop."/>
|
||||||
|
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<customize/>
|
||||||
|
</java>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-java">
|
||||||
|
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${main.class}" name="classname"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<java classname="@{classname}" dir="${work.dir}" fork="true">
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
<classpath>
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="run-sys-prop."/>
|
||||||
|
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<customize/>
|
||||||
|
</java>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-presetdef-jar">
|
||||||
|
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<jar compress="${jar.compress}" jarfile="${dist.jar}">
|
||||||
|
<j2seproject1:fileset dir="${build.classes.dir}"/>
|
||||||
|
</jar>
|
||||||
|
</presetdef>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
|
||||||
|
<!--
|
||||||
|
===================
|
||||||
|
COMPILATION SECTION
|
||||||
|
===================
|
||||||
|
-->
|
||||||
|
<target depends="init" name="deps-jar" unless="no.deps">
|
||||||
|
<ant antfile="${project.NBI_Engine}/build.xml" inheritall="false" target="jar"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
|
||||||
|
<target depends="init" name="-check-automatic-build">
|
||||||
|
<available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
|
||||||
|
<antcall target="clean"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar" name="-pre-pre-compile">
|
||||||
|
<mkdir dir="${build.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target if="do.depend.true" name="-compile-depend">
|
||||||
|
<j2seproject3:depend/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
|
||||||
|
<j2seproject3:javac/>
|
||||||
|
<copy todir="${build.classes.dir}">
|
||||||
|
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
|
||||||
|
<target name="-pre-compile-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
|
||||||
|
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||||
|
<j2seproject3:force-recompile/>
|
||||||
|
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
|
||||||
|
<!--
|
||||||
|
====================
|
||||||
|
JAR BUILDING SECTION
|
||||||
|
====================
|
||||||
|
-->
|
||||||
|
<target depends="init" name="-pre-pre-jar">
|
||||||
|
<dirname file="${dist.jar}" property="dist.jar.dir"/>
|
||||||
|
<mkdir dir="${dist.jar.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-jar">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
|
||||||
|
<j2seproject1:jar/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
|
||||||
|
<j2seproject1:jar manifest="${manifest.file}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
|
||||||
|
<j2seproject1:jar manifest="${manifest.file}">
|
||||||
|
<j2seproject1:manifest>
|
||||||
|
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
|
||||||
|
</j2seproject1:manifest>
|
||||||
|
</j2seproject1:jar>
|
||||||
|
<echo>To run this application from the command line without Ant, try:</echo>
|
||||||
|
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||||
|
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||||
|
<pathconvert property="run.classpath.with.dist.jar">
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
|
||||||
|
</pathconvert>
|
||||||
|
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
|
||||||
|
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||||
|
<pathconvert property="run.classpath.without.build.classes.dir">
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
<map from="${build.classes.dir.resolved}" to=""/>
|
||||||
|
</pathconvert>
|
||||||
|
<pathconvert pathsep=" " property="jar.classpath">
|
||||||
|
<path path="${run.classpath.without.build.classes.dir}"/>
|
||||||
|
<chainedmapper>
|
||||||
|
<flattenmapper/>
|
||||||
|
<globmapper from="*" to="lib/*"/>
|
||||||
|
</chainedmapper>
|
||||||
|
</pathconvert>
|
||||||
|
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
|
||||||
|
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
|
||||||
|
<fileset dir="${build.classes.dir}"/>
|
||||||
|
<manifest>
|
||||||
|
<attribute name="Main-Class" value="${main.class}"/>
|
||||||
|
<attribute name="Class-Path" value="${jar.classpath}"/>
|
||||||
|
</manifest>
|
||||||
|
</copylibs>
|
||||||
|
<echo>To run this application from the command line without Ant, try:</echo>
|
||||||
|
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||||
|
<echo>java -jar "${dist.jar.resolved}"</echo>
|
||||||
|
</target>
|
||||||
|
<target name="-post-jar">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
|
||||||
|
<!--
|
||||||
|
=================
|
||||||
|
EXECUTION SECTION
|
||||||
|
=================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile" description="Run a main class." name="run">
|
||||||
|
<j2seproject1:java>
|
||||||
|
<customize>
|
||||||
|
<arg line="${application.args}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject1:java>
|
||||||
|
</target>
|
||||||
|
<target name="-do-not-recompile">
|
||||||
|
<property name="javac.includes.binary" value=""/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-single" name="run-single">
|
||||||
|
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
|
||||||
|
<j2seproject1:java classname="${run.class}"/>
|
||||||
|
</target>
|
||||||
|
<!--
|
||||||
|
=================
|
||||||
|
DEBUGGING SECTION
|
||||||
|
=================
|
||||||
|
-->
|
||||||
|
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
|
||||||
|
<j2seproject1:nbjpdastart name="${debug.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile" name="-debug-start-debuggee">
|
||||||
|
<j2seproject3:debug>
|
||||||
|
<customize>
|
||||||
|
<arg line="${application.args}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
|
||||||
|
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
|
||||||
|
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
|
||||||
|
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
|
||||||
|
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
|
||||||
|
<j2seproject3:debug classname="${debug.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
|
||||||
|
<target depends="init" name="-pre-debug-fix">
|
||||||
|
<fail unless="fix.includes">Must set fix.includes</fail>
|
||||||
|
<property name="javac.includes" value="${fix.includes}.java"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
|
||||||
|
<j2seproject1:nbjpdareload/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
|
||||||
|
<!--
|
||||||
|
===============
|
||||||
|
JAVADOC SECTION
|
||||||
|
===============
|
||||||
|
-->
|
||||||
|
<target depends="init" name="-javadoc-build">
|
||||||
|
<mkdir dir="${dist.javadoc.dir}"/>
|
||||||
|
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
|
||||||
|
<classpath>
|
||||||
|
<path path="${javac.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
|
||||||
|
<filename name="**/*.java"/>
|
||||||
|
</fileset>
|
||||||
|
</javadoc>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
|
||||||
|
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
JUNIT COMPILATION SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
|
||||||
|
<mkdir dir="${build.test.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile-test">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target if="do.depend.true" name="-compile-test-depend">
|
||||||
|
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
|
||||||
|
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
<copy todir="${build.test.classes.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-test">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
|
||||||
|
<target name="-pre-compile-test-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
|
||||||
|
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||||
|
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
|
||||||
|
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
<copy todir="${build.test.classes.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-test-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
|
||||||
|
<!--
|
||||||
|
=======================
|
||||||
|
JUNIT EXECUTION SECTION
|
||||||
|
=======================
|
||||||
|
-->
|
||||||
|
<target depends="init" if="have.tests" name="-pre-test-run">
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
|
||||||
|
<j2seproject3:junit testincludes="**/*Test.java"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
|
||||||
|
<fail if="tests.failed">Some tests failed; see details above.</fail>
|
||||||
|
</target>
|
||||||
|
<target depends="init" if="have.tests" name="test-report"/>
|
||||||
|
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
|
||||||
|
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
|
||||||
|
<target depends="init" if="have.tests" name="-pre-test-run-single">
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
|
||||||
|
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
|
||||||
|
<j2seproject3:junit excludes="" includes="${test.includes}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
|
||||||
|
<fail if="tests.failed">Some tests failed; see details above.</fail>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
|
||||||
|
<!--
|
||||||
|
=======================
|
||||||
|
JUNIT DEBUGGING SECTION
|
||||||
|
=======================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
|
||||||
|
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
|
||||||
|
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
|
||||||
|
<delete file="${test.report.file}"/>
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
|
||||||
|
<customize>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="test-sys-prop."/>
|
||||||
|
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<arg value="${test.class}"/>
|
||||||
|
<arg value="showoutput=true"/>
|
||||||
|
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
|
||||||
|
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
|
||||||
|
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
|
||||||
|
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
|
||||||
|
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
APPLET EXECUTION SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-single" name="run-applet">
|
||||||
|
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
|
||||||
|
<j2seproject1:java classname="sun.applet.AppletViewer">
|
||||||
|
<customize>
|
||||||
|
<arg value="${applet.url}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject1:java>
|
||||||
|
</target>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
APPLET DEBUGGING SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
|
||||||
|
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
|
||||||
|
<j2seproject3:debug classname="sun.applet.AppletViewer">
|
||||||
|
<customize>
|
||||||
|
<arg value="${applet.url}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
|
||||||
|
<!--
|
||||||
|
===============
|
||||||
|
CLEANUP SECTION
|
||||||
|
===============
|
||||||
|
-->
|
||||||
|
<target depends="init" name="deps-clean" unless="no.deps">
|
||||||
|
<ant antfile="${project.NBI_Engine}/build.xml" inheritall="false" target="clean"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init" name="-do-clean">
|
||||||
|
<delete dir="${build.dir}"/>
|
||||||
|
<delete dir="${dist.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-post-clean">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
|
||||||
|
</project>
|
8
sdk/nbi/stub/ext/engine/nbproject/genfiles.properties
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
build.xml.data.CRC32=8f661a73
|
||||||
|
build.xml.script.CRC32=f2f0e306
|
||||||
|
build.xml.stylesheet.CRC32=a12b3d02
|
||||||
|
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||||
|
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||||
|
nbproject/build-impl.xml.data.CRC32=32036222
|
||||||
|
nbproject/build-impl.xml.script.CRC32=ff4c3c7b
|
||||||
|
nbproject/build-impl.xml.stylesheet.CRC32=65b8de21
|
4
sdk/nbi/stub/ext/engine/nbproject/private/private.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
||||||
|
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
|
||||||
|
</project-private>
|
102
sdk/nbi/stub/ext/engine/nbproject/project.properties
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
application.title=NetBeans Installer Engine
|
||||||
|
application.vendor=ks152834
|
||||||
|
build.classes.dir=${build.dir}/classes
|
||||||
|
build.classes.excludes=**/*.java,**/*.form
|
||||||
|
# This directory is removed when the project is cleaned:
|
||||||
|
build.dir=build
|
||||||
|
build.generated.dir=${build.dir}/generated
|
||||||
|
# Only compile against the classpath explicitly listed here:
|
||||||
|
build.sysclasspath=ignore
|
||||||
|
build.test.classes.dir=${build.dir}/test/classes
|
||||||
|
build.test.results.dir=${build.dir}/test/results
|
||||||
|
debug.classpath=\
|
||||||
|
${run.classpath}
|
||||||
|
debug.test.classpath=\
|
||||||
|
${run.test.classpath}
|
||||||
|
# This directory is removed when the project is cleaned:
|
||||||
|
dist.dir=dist
|
||||||
|
dist.jar=${dist.dir}/nbi-engine.jar
|
||||||
|
dist.javadoc.dir=${dist.dir}/javadoc
|
||||||
|
excludes=
|
||||||
|
file.reference.reglib-src=../../reglib/src
|
||||||
|
includes=**
|
||||||
|
jar.compress=false
|
||||||
|
javac.classpath=\
|
||||||
|
${reference.NBI_Engine.jar}
|
||||||
|
# Space-separated list of extra javac options
|
||||||
|
javac.compilerargs=
|
||||||
|
javac.deprecation=false
|
||||||
|
javac.source=1.5
|
||||||
|
javac.target=1.5
|
||||||
|
javac.test.classpath=\
|
||||||
|
${javac.classpath}:\
|
||||||
|
${build.classes.dir}:\
|
||||||
|
${libs.junit.classpath}
|
||||||
|
javadoc.additionalparam=
|
||||||
|
javadoc.author=false
|
||||||
|
javadoc.encoding=
|
||||||
|
javadoc.noindex=false
|
||||||
|
javadoc.nonavbar=false
|
||||||
|
javadoc.notree=false
|
||||||
|
javadoc.private=false
|
||||||
|
javadoc.splitindex=true
|
||||||
|
javadoc.use=true
|
||||||
|
javadoc.version=false
|
||||||
|
javadoc.windowtitle=
|
||||||
|
main.class=org.netbeans.installer.Installer
|
||||||
|
manifest.file=manifest.mf
|
||||||
|
meta.inf.dir=${src.dir}/META-INF
|
||||||
|
platform.active=default_platform
|
||||||
|
project.NBI_Engine=../../nbi/engine
|
||||||
|
reference.NBI_Engine.jar=${project.NBI_Engine}/dist/nbi-engine.jar
|
||||||
|
run.classpath=\
|
||||||
|
${build.classes.dir}
|
||||||
|
# Space-separated list of JVM arguments used when running the project
|
||||||
|
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||||
|
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||||
|
run.jvmargs=-Dnbi.product.bundled.registry.uri=file:/D:/temp/nbi-build/dist/registry-temp/registry.xml
|
||||||
|
run.test.classpath=\
|
||||||
|
${javac.test.classpath}:\
|
||||||
|
${build.test.classes.dir}
|
||||||
|
source.encoding=UTF-8
|
||||||
|
src.dir=src
|
||||||
|
test.src.dir=test
|
64
sdk/nbi/stub/ext/engine/nbproject/project.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||||
|
<type>org.netbeans.modules.java.j2seproject</type>
|
||||||
|
<configuration>
|
||||||
|
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<name>HelloWorld Engine</name>
|
||||||
|
<minimum-ant-version>1.6.5</minimum-ant-version>
|
||||||
|
<source-roots>
|
||||||
|
<root id="src.dir"/>
|
||||||
|
</source-roots>
|
||||||
|
<test-roots>
|
||||||
|
<root id="test.src.dir"/>
|
||||||
|
</test-roots>
|
||||||
|
</data>
|
||||||
|
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
|
||||||
|
<reference>
|
||||||
|
<foreign-project>NBI_Engine</foreign-project>
|
||||||
|
<artifact-type>jar</artifact-type>
|
||||||
|
<script>build.xml</script>
|
||||||
|
<target>jar</target>
|
||||||
|
<clean-target>clean</clean-target>
|
||||||
|
<id>jar</id>
|
||||||
|
</reference>
|
||||||
|
</references>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
89
sdk/nbi/stub/ext/engine/src/data/engine.properties
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
|
||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
nbi.wizard.components.instance.uri=resource:org/mycompany/installer/wizard/wizard-components.xml
|
||||||
|
nbi.wizard.ui.swing.frame.icon=resource:org/mycompany/installer/wizard/wizard-icon.png
|
||||||
|
nbi.wizard.ui.swing.frame.title.prefix= {product-name} Installer
|
||||||
|
nbi.wizard.ui.swing.frame.title.pattern={0}
|
||||||
|
nbi.macosx.application.directory.name={product-name} Installer
|
||||||
|
nbi.product.remove.corrupted.products.silently=true
|
||||||
|
|
||||||
|
nbi.wizard.ui.swing.frame.head.right.image=resource:org/mycompany/installer/wizard/wizard-description-background-right.png
|
||||||
|
nbi.wizard.ui.swing.frame.head.left.image=resource:org/mycompany/installer/wizard/wizard-description-background-left.png
|
||||||
|
|
||||||
|
nbi.wizard.ui.swing.welcome.left.top.image=resource:org/mycompany/installer/wizard/components/panels/resources/welcome-left-top.png
|
||||||
|
nbi.wizard.ui.swing.welcome.left.bottom.image=resource:org/mycompany/installer/wizard/components/panels/resources/welcome-left-bottom.png
|
||||||
|
|
||||||
|
nbi.local.directory.path=$S{user.home}/.{product-uid}-installer
|
||||||
|
|
||||||
|
nbi.wizard.ui.swing.frame.width.default=600
|
||||||
|
nbi.wizard.ui.swing.frame.height.default=500
|
||||||
|
nbi.wizard.ui.swing.frame.width.win.classic=588
|
||||||
|
nbi.wizard.ui.swing.frame.height.win.classic=442
|
||||||
|
nbi.wizard.ui.swing.frame.width.win.xp=600
|
||||||
|
nbi.wizard.ui.swing.frame.height.win.xp=450
|
||||||
|
nbi.wizard.ui.swing.frame.width.motif=624
|
||||||
|
nbi.wizard.ui.swing.frame.height.motif=470
|
||||||
|
nbi.wizard.ui.swing.frame.width.metal=624
|
||||||
|
nbi.wizard.ui.swing.frame.height.metal=470
|
||||||
|
nbi.wizard.ui.swing.frame.width.aqua=640
|
||||||
|
nbi.wizard.ui.swing.frame.height.aqua=480
|
||||||
|
nbi.wizard.ui.swing.frame.width.gtk=704
|
||||||
|
nbi.wizard.ui.swing.frame.height.gtk=528
|
||||||
|
nbi.wizard.ui.swing.frame.width.nimbus=624
|
||||||
|
nbi.wizard.ui.swing.frame.height.nimbus=512
|
||||||
|
|
||||||
|
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.default=600
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.default=500
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.win.classic=588
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.win.classic=442
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.win.xp=600
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.win.xp=450
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.motif=624
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.motif=470
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.metal=624
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.metal=470
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.aqua=640
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.aqua=480
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.gtk=704
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.gtk=528
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.width.nimbus=624
|
||||||
|
nbi.wizard.ui.swing.frame.minimum.height.nimbus=512
|
@ -0,0 +1,71 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
nlu.jvm.notfoundmessage=Java SE Development Kit (JDK) was not found on this computer\nJDK 6 is required for installing {product-name}. Make sure that the JDK is properly installed and run installer again.\nYou can specify valid JDK location using {0} installer argument.\n\nTo download the JDK, visit http://java.sun.com/javase/downloads
|
||||||
|
nlu.jvm.usererror=Java Runtime Environment (JRE) was not found at the specified location {0}
|
||||||
|
nlu.jvm.uncompatible=Unsupported JVM version at {0}.\nTry to specify another JVM location using parameter {1}
|
||||||
|
nlu.freespace=There is not enough free disk space to extract installation data\n{0} MB of free disk space is required in a temporary folder.\nClean up the disk space and run installer again. You can specify a temporary folder with sufficient disk space using {1} installer argument
|
||||||
|
nlu.integrity=\nInstaller file {0} seems to be corrupted
|
||||||
|
nlu.missing.external.resource=Can`t run {product-name} Installer.\nAn external file with necessary data is required but missing:\n{0}
|
||||||
|
nlu.cannot.create.tmpdir=Cannot create temporary directory {0}
|
||||||
|
nlu.cannot.extract.bundled.jvm=Cannot extract bundled JVM
|
||||||
|
nlu.cannot.unpack.jvm.file=Cannot unpack file {0}
|
||||||
|
nlu.error.verify.bundled.jvm=Cannot verify bundled JVM, try to search JVM on the system
|
||||||
|
|
||||||
|
nlu.running=Running the installer wizard...
|
||||||
|
nlu.starting=Configuring the installer...
|
||||||
|
nlu.extracting=Extracting installation data...
|
||||||
|
nlu.prepare.jvm=Preparing bundled JVM ...
|
||||||
|
nlu.jvm.search=Searching for JVM on the system...
|
||||||
|
|
||||||
|
nlu.msg.usage=\nUsage:
|
||||||
|
nlu.arg.javahome=\t{0}\t<dir>\tUsing java from <dir> for running application
|
||||||
|
nlu.arg.verbose=\t{0}\t\tUse verbose output
|
||||||
|
nlu.arg.output=\t{0}\t<out>\tRedirect all output to file <out>
|
||||||
|
nlu.arg.disable.space.check=\t{0}\t\tDisable free space check
|
||||||
|
nlu.arg.extract=\t{0}\t[dir]\tExtract all bundled data to <dir>.\n\t\t\t\tIf <dir> is not specified then extract to the current directory
|
||||||
|
nlu.arg.tempdir=\t{0}\t<dir>\tUse <dir> for extracting temporary data
|
||||||
|
nlu.arg.cpa=\t{0} <cp>\tAppend classpath with <cp>
|
||||||
|
nlu.arg.cpp=\t{0} <cp>\tPrepend classpath with <cp>
|
||||||
|
nlu.arg.locale=\t{0}\t<locale>\tOverride default locale with specified <locale>
|
||||||
|
nlu.arg.silent=\t{0}\t\tRun installer silently
|
||||||
|
nlu.arg.help=\t{0}\t\tShow this help
|
||||||
|
|
||||||
|
|
||||||
|
nlu.java.application.name.macosx={product-name} Installer
|
@ -0,0 +1,74 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
nlw.jvm.notfoundmessage=Java SE Development Kit (JDK) was not found on this computer\nJDK 6 is required for installing {product-name}. Make sure that the JDK is properly installed and run installer again. You can specify valid JDK location using {0} installer argument.\n\nTo download the JDK, visit http://java.sun.com/javase/downloads
|
||||||
|
nlw.jvm.usererror=Java Runtime Environment (JRE) was not found\nThere is no JRE at the specified location {0}
|
||||||
|
nlw.jvm.unsupportedversion=Unsupported Java VM version\nThe Java VM at {0} has the unsupported version
|
||||||
|
nlw.freespace=There is not enough free disk space to extract installation data\n{0} MB of free disk space is required in a temporary folder. Clean up the disk space and run installer again. You can specify a temporary folder with sufficient disk space using {1} installer argument
|
||||||
|
nlw.tmpdir=Can't create temporary directory\nThe temporary directory for extracting data {0} was not created
|
||||||
|
nlw.integrity=Installer file is corrupted\nInstaller file {0} seems to be corrupted
|
||||||
|
nlw.output.error=Data extraction error\nCan't create file {0}!\nThe following error occured :\n{1}
|
||||||
|
nlw.java.process.error=An error occured while running java process\n{0}
|
||||||
|
nlw.missing.external.resource=Can`t run {product-name} Installer.\nAn external file with necessary data is required but missing:\n{0}
|
||||||
|
nlw.bundled.jvm.extract.error=Cannot prepare bundled JVM to run the installer.\nMost probably the bundled JVM is not compatible with the current platform.
|
||||||
|
nlw.bundled.jvm.verify.error=An error occured while verifying bundled JVM.\nMost probably the bundled JVM is not compatible with the current platform.
|
||||||
|
|
||||||
|
nlw.arg.output={0} <output-file>\n\tRedirect output to file <output-file>
|
||||||
|
nlw.arg.javahome={0} <javahomedir>\n\tRun jar file using JVM from <javahomedir>
|
||||||
|
nlw.arg.verbose={0}\n\tUse verbose output
|
||||||
|
nlw.arg.tempdir={0} <temp-dir>\n\tUse <temp-dir> for extracting data
|
||||||
|
nlw.arg.extract={0} [directory]\n\tExtract all bundled data to the specific directory.\n\tIf directory is not specified then extract to the current directory
|
||||||
|
nlw.arg.classpatha={0} <classpath>\n\tAppend classpath with <classpath>
|
||||||
|
nlw.arg.classpathp={0} <classpath>\n\tPrepend classpath with <classpath>
|
||||||
|
nlw.arg.disable.space.check={0}\n\tDisable free space check
|
||||||
|
nlw.arg.locale={0} <locale>\n\tOverride system default locale with <locale>
|
||||||
|
nlw.arg.silent={0} \n\tRun installer silently
|
||||||
|
nlw.arg.help={0}\n\tShow help message
|
||||||
|
|
||||||
|
|
||||||
|
nlw.msg.create.tmpdir=Creating temporary directory ...
|
||||||
|
nlw.msg.extract=Extracting data ...
|
||||||
|
nlw.msg.jvmsearch=Finding JVM on your system ...
|
||||||
|
nlw.msg.setoptions=Setting command options ...
|
||||||
|
nlw.msg.running=Running JVM ...
|
||||||
|
nlw.msg.title=Please wait while the launcher prepares data to run the installer ...
|
||||||
|
nlw.msg.messagebox.title={product-name} Installer
|
||||||
|
nlw.msg.progress.title=Configuring the installer ...
|
||||||
|
nlw.msg.button.error=Exit Installer
|
||||||
|
nlw.msg.main.title={product-name} Installer
|
@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
############################################################################
|
||||||
|
# NetBeansRCPUtils.java
|
||||||
|
|
||||||
|
NU.error.cannot.get.userdir=Can`t get application userdir from {0}
|
@ -0,0 +1,191 @@
|
|||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU General
|
||||||
|
* Public License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
* License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
* compliance with the License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
* License for the specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header Notice in
|
||||||
|
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
* designates this particular file as subject to the "Classpath" exception as
|
||||||
|
* provided by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the License Header,
|
||||||
|
* with the fields enclosed by brackets [] replaced by your own identifying
|
||||||
|
* information: "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
* this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
* you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
* distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above. However, if
|
||||||
|
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
|
||||||
|
* the option applies only if the new code is made subject to such option by the
|
||||||
|
* copyright holder.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.mycompany.installer.utils.applications;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FilenameFilter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import org.netbeans.installer.utils.FileUtils;
|
||||||
|
import org.netbeans.installer.utils.LogManager;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.SystemUtils;
|
||||||
|
import org.netbeans.installer.utils.exceptions.NativeException;
|
||||||
|
import org.netbeans.installer.utils.system.WindowsNativeUtils;
|
||||||
|
import org.netbeans.installer.utils.system.WindowsNativeUtils;
|
||||||
|
import org.netbeans.installer.utils.system.windows.WindowsRegistry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class NetBeansRCPUtils {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get resolved application user directory
|
||||||
|
* @param appLocation Application home directory
|
||||||
|
* @throws IOException if can`t get application default userdir
|
||||||
|
*/
|
||||||
|
public static File getApplicationUserDirFile(File appLocation) throws IOException {
|
||||||
|
String dir = getApplicationUserDir(appLocation);
|
||||||
|
String userHome = System.getProperty("user.home");
|
||||||
|
if(SystemUtils.isWindows()) {
|
||||||
|
WindowsNativeUtils wnu = (WindowsNativeUtils) SystemUtils.getNativeUtils();
|
||||||
|
WindowsRegistry reg = wnu.getWindowsRegistry();
|
||||||
|
String key = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
|
||||||
|
try {
|
||||||
|
if(reg.keyExists(reg.HKCU, key) &&
|
||||||
|
reg.valueExists(reg.HKCU, key, "AppData")) {
|
||||||
|
userHome = reg.getStringValue(reg.HKCU, key, "AppData", false);
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (NativeException e) {
|
||||||
|
LogManager.log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dir = dir.replace(USER_HOME_TOKEN, userHome);
|
||||||
|
dir = dir.replace(APPNAME_TOKEN, getApplicationName(appLocation));
|
||||||
|
return new File(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get application user directory as it is written in application`s configuration file
|
||||||
|
* @param appLocation Application home directory
|
||||||
|
* @throws IOException if can`t get default userdir
|
||||||
|
*/
|
||||||
|
public static String getApplicationUserDir(File appLocation) throws IOException {
|
||||||
|
File []confFiles = new File(appLocation, "etc").listFiles(new FilenameFilter() {
|
||||||
|
|
||||||
|
public boolean accept(File dir, String name) {
|
||||||
|
return name.endsWith(".conf");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
File conf = null;
|
||||||
|
if(confFiles.length == 1) {
|
||||||
|
conf = confFiles[0];
|
||||||
|
} else if(confFiles.length >2) {
|
||||||
|
for(File f : confFiles) {
|
||||||
|
String prefix = f.getName().substring(0, f.getName().indexOf(".conf"));
|
||||||
|
if((SystemUtils.isUnix() && new File(appLocation, "bin/" + prefix).exists()) ||
|
||||||
|
(SystemUtils.isWindows() && new File(appLocation, "bin/" + prefix + ".exe").exists())) {
|
||||||
|
conf = f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(conf == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String contents = FileUtils.readFile(conf);
|
||||||
|
Matcher matcher = Pattern.compile(
|
||||||
|
NEW_LINE_PATTERN + SPACES_PATTERN +
|
||||||
|
(SystemUtils.isMacOS() ? DEFAULT_USERDIR_MAC : DEFAULT_USERDIR) +
|
||||||
|
"\"(.*?)\"").matcher(contents);
|
||||||
|
if(matcher.find() && matcher.groupCount() == 1) {
|
||||||
|
return matcher.group(1);
|
||||||
|
} else {
|
||||||
|
throw new IOException(StringUtils.format(
|
||||||
|
ERROR_CANNOT_GET_USERDIR_STRING,conf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get application name - i.e. <name> in bin/<name>.exe and etc/<name>.conf
|
||||||
|
* @param appLocation Application home directory
|
||||||
|
*/
|
||||||
|
public static String getApplicationName(File appLocation) {
|
||||||
|
File []confFiles = new File(appLocation, "etc").listFiles(new FilenameFilter() {
|
||||||
|
|
||||||
|
public boolean accept(File dir, String name) {
|
||||||
|
return name.endsWith(".conf");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(confFiles.length == 1) {
|
||||||
|
String name = confFiles[0].getName();
|
||||||
|
return name.substring(0, name.indexOf(".conf"));
|
||||||
|
} else if(confFiles.length >2) {
|
||||||
|
for(File f : confFiles) {
|
||||||
|
String name = f.getName();
|
||||||
|
String prefix = name.substring(0, name.indexOf(".conf"));
|
||||||
|
if((SystemUtils.isUnix() && new File(appLocation, "bin/" + prefix).exists()) ||
|
||||||
|
(SystemUtils.isWindows() && new File(appLocation, "bin/" + prefix + ".exe").exists())) {
|
||||||
|
return prefix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Instance
|
||||||
|
private NetBeansRCPUtils() {
|
||||||
|
// does nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
|
||||||
|
public static final String NEW_LINE_PATTERN =
|
||||||
|
"[\r\n|\n|\r]"; // NOI18N
|
||||||
|
public static final String SPACES_PATTERN =
|
||||||
|
"\\ *"; // NOI18N
|
||||||
|
|
||||||
|
public static final String DEFAULT_USERDIR =
|
||||||
|
"default_userdir="; // NOI18N
|
||||||
|
public static final String DEFAULT_USERDIR_MAC =
|
||||||
|
"default_mac_userdir="; // NOI18N
|
||||||
|
|
||||||
|
public static final String USER_HOME_TOKEN =
|
||||||
|
"${HOME}"; // NOI18N
|
||||||
|
public static final String APPNAME_TOKEN =
|
||||||
|
"${APPNAME}"; // NOI18N
|
||||||
|
|
||||||
|
public static final String ERROR_CANNOT_GET_USERDIR_STRING =
|
||||||
|
ResourceUtils.getString(NetBeansRCPUtils.class,
|
||||||
|
"NU.error.cannot.get.userdir");//NOI18N
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
IA.title=Installer Initialization
|
||||||
|
IA.progress.title=Initialization in progress...
|
||||||
|
IA.description=Please wait while initialization is completed.
|
@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU General
|
||||||
|
* Public License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
* License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
* compliance with the License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
* License for the specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header Notice in
|
||||||
|
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
* designates this particular file as subject to the "Classpath" exception as
|
||||||
|
* provided by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the License Header,
|
||||||
|
* with the fields enclosed by brackets [] replaced by your own identifying
|
||||||
|
* information: "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
* this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
* you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
* distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above. However, if
|
||||||
|
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
|
||||||
|
* the option applies only if the new code is made subject to such option by the
|
||||||
|
* copyright holder.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.mycompany.installer.wizard.components.actions;
|
||||||
|
|
||||||
|
import org.netbeans.installer.product.Registry;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.helper.ErrorLevel;
|
||||||
|
import org.netbeans.installer.utils.ErrorManager;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.progress.Progress;
|
||||||
|
import org.netbeans.installer.wizard.components.WizardAction;
|
||||||
|
import org.netbeans.installer.wizard.components.actions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class InitializeAction extends WizardAction {
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Instance
|
||||||
|
public InitializeAction() {
|
||||||
|
setProperty(TITLE_PROPERTY,
|
||||||
|
DEFAULT_TITLE);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY,
|
||||||
|
DEFAULT_DESCRIPTION);
|
||||||
|
|
||||||
|
downloadLogic = new DownloadConfigurationLogicAction();
|
||||||
|
initReg = new InitializeRegistryAction();
|
||||||
|
}
|
||||||
|
private DownloadConfigurationLogicAction downloadLogic;
|
||||||
|
private InitializeRegistryAction initReg;
|
||||||
|
|
||||||
|
public void execute() {
|
||||||
|
final Progress progress = new Progress();
|
||||||
|
|
||||||
|
//getWizardUi().setProgress(progress);
|
||||||
|
|
||||||
|
|
||||||
|
progress.setTitle(getProperty(PROGRESS_TITLE_PROPERTY));
|
||||||
|
|
||||||
|
//progress.synchronizeDetails(false);
|
||||||
|
|
||||||
|
if (initReg.canExecuteForward()) {
|
||||||
|
initReg.setWizard(getWizard());
|
||||||
|
initReg.execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (downloadLogic.canExecuteForward()) {
|
||||||
|
downloadLogic.setWizard(getWizard());
|
||||||
|
downloadLogic.execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WizardActionUi getWizardUi() {
|
||||||
|
return null; // this action does not have a ui
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
public static final String DEFAULT_TITLE = ResourceUtils.getString(
|
||||||
|
InitializeAction.class,
|
||||||
|
"IA.title"); // NOI18N
|
||||||
|
public static final String PROGRESS_TITLE_PROPERTY = ResourceUtils.getString(
|
||||||
|
InitializeAction.class,
|
||||||
|
"IA.progress.title"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESCRIPTION = ResourceUtils.getString(
|
||||||
|
InitializeAction.class,
|
||||||
|
"IA.description"); // NOI18N
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
WP.title={product-name} Introduction
|
||||||
|
WP.description={product-name}
|
||||||
|
WP.welcome.text=<html>\
|
||||||
|
<h1>Welcome to the {product-name} Installer Wizard</h1><br>\
|
||||||
|
This program will install the {product-name} on your computer.<br><br>\
|
||||||
|
Click Next to continue.
|
||||||
|
WP.already.installed.text=<html>\
|
||||||
|
<h1>Welcome to the {product-name} Installer Wizard</h1><br>\
|
||||||
|
{0} is already installed at {1}.<br>It is not possible to install it again.<br><br>\
|
||||||
|
Click Exit to close this wizard.
|
||||||
|
WP.already.installed.next.button.text=&Exit
|
||||||
|
WP.incompatible.platform.text=<html>\
|
||||||
|
<h1>Welcome to the {product-name} Installer Wizard</h1><br>\
|
||||||
|
The {0} installer was not designed to run on this operating system so it is not possible to install it. \
|
||||||
|
Please run the installer for the appropriate platform.<br><br>\
|
||||||
|
Click Exit to close this wizard.
|
||||||
|
|
||||||
|
PoISP.title=Setup Complete
|
||||||
|
PoISP.description=Click Finish to finish {product-name} setup.
|
||||||
|
|
||||||
|
PoISP.message.text.success=\
|
||||||
|
<html><b><font size="+1">Installation Complete</font></b><br><br><br>\
|
||||||
|
{0} has been installed on your computer.</html>
|
||||||
|
#NOI18N
|
||||||
|
PoISP.message.content.type.success=text/html
|
||||||
|
|
||||||
|
PoISP.message.text.warnings=\
|
||||||
|
<html><b><font size="+1">Installation Complete</font></b><br><br><br>\
|
||||||
|
<span color="red">{0} has been installed on your computer but some not critical warnings were encountered.\
|
||||||
|
<br><br>For more details consult the installation log file:<br>{1}</span></html>
|
||||||
|
|
||||||
|
PoISP.message.text.finish=<html>Click Finish to close this wizard.</html>
|
||||||
|
PoISP.message.text.finish.content.type=text/html
|
||||||
|
|
||||||
|
#NOI18N
|
||||||
|
PoISP.message.content.type.warnings=text/html
|
||||||
|
|
||||||
|
PoISP.message.text.errors=<html><b><font size="+1">Installation Failed</font></b><br><br><br>\
|
||||||
|
<span color="red">{0} has not been installed on your computer.</span><br><br>\
|
||||||
|
Try to run installer again or consult the installation log file for more details:<br>{1}</span></html>
|
||||||
|
#NOI18N
|
||||||
|
PoISP.message.content.type.errors=text/html
|
||||||
|
|
||||||
|
PoISP.message.text.success.uninstall=<html>\
|
||||||
|
<b><font size="+1">Uninstallation Complete</font></b><br><br><br>\
|
||||||
|
{0} has been uninstalled.</html>
|
||||||
|
#NOI18N
|
||||||
|
PoISP.message.content.type.success.uninstall=text/html
|
||||||
|
|
||||||
|
PoISP.message.text.warnings.uninstall=\
|
||||||
|
<html><b><font size="+1">Uninstallation Complete</font></b><br><br><br>\
|
||||||
|
<span color="red">{0} has been uninstalled with warnings.<br><br>\
|
||||||
|
For more details consult the installation log file:<br>{1}</span></html>
|
||||||
|
#NOI18N
|
||||||
|
PoISP.message.content.type.warnings.uninstall=text/html
|
||||||
|
|
||||||
|
PoISP.message.text.errors.uninstall=<html><b><font size="+1">Uninstallation Failed</font></b><br><br>\
|
||||||
|
<span color="red">Uninstallation of {0} was not completed.<br><br>\
|
||||||
|
Try to run uninstaller again or consult the uninstallation log file for more details:<br>{1}</span>\
|
||||||
|
</html>
|
||||||
|
#NOI18N
|
||||||
|
PoISP.message.content.type.errors.uninstall=text/html
|
||||||
|
|
||||||
|
PoISP.message.run.application.now=Launch {0} after the installer closes.
|
||||||
|
|
||||||
|
PoISP.next.button.text=&Finish
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# PreInstallSummaryPanel.java
|
||||||
|
PrISP.title=Summary
|
||||||
|
PrISP.description=Click Install to start the installation.
|
||||||
|
PrISP.description.uninstall=Click Uninstall to start the uninstallation.
|
||||||
|
|
||||||
|
PrISP.installation.folder={0} Installation Folder:
|
||||||
|
PrISP.uninstall.list.label.text=<html><br>Click Uninstall to remove {0} from the system.
|
||||||
|
PrISP.installation.size=Total Installation Size:
|
||||||
|
PrISP.download.size=Total Download Size:
|
||||||
|
|
||||||
|
PrISP.next.button.text=&Install
|
||||||
|
PrISP.next.button.text.uninstall=&Uninstall
|
||||||
|
|
||||||
|
PrISP.error.not.enough.space=Insufficient disk space for proper installation. Additional {1} is required in {0}.
|
||||||
|
PrISP.error.cannot.check.space=Cannot check the free disk space
|
||||||
|
PrISP.error.logic.access=Could not access product's configuration logic
|
||||||
|
PrISP.error.fsroots=Cannot get the list of file system roots
|
||||||
|
PrISP.error.non.existent.root={0} is set up to be installed to {1} which does not belong to any of the file system roots.
|
||||||
|
PrISP.error.cannot.write=The wizard does not have write access to {1}, the installation directory of {0}. Please correct the permissions before proceeding.
|
||||||
|
|
||||||
|
PrISP.remove.app.userdir.text=\
|
||||||
|
<html>\
|
||||||
|
If you wish to remove the application settings directory that stores user configuration data for {0}, check the following option.<br>
|
||||||
|
PrISP.remove.app.userdir.checkbox=Remove directory {0}
|
@ -0,0 +1,457 @@
|
|||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU General
|
||||||
|
* Public License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
* License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
* compliance with the License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
* License for the specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header Notice in
|
||||||
|
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
* designates this particular file as subject to the "Classpath" exception as
|
||||||
|
* provided by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the License Header,
|
||||||
|
* with the fields enclosed by brackets [] replaced by your own identifying
|
||||||
|
* information: "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
* this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
* you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
* distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above. However, if
|
||||||
|
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
|
||||||
|
* the option applies only if the new code is made subject to such option by the
|
||||||
|
* copyright holder.
|
||||||
|
*/
|
||||||
|
package org.mycompany.installer.wizard.components.panels;
|
||||||
|
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.netbeans.installer.product.Registry;
|
||||||
|
import org.netbeans.installer.product.components.Product;
|
||||||
|
import org.netbeans.installer.product.components.ProductConfigurationLogic;
|
||||||
|
import org.netbeans.installer.utils.LogManager;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.exceptions.InitializationException;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiCheckBox;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiTextPane;
|
||||||
|
import org.netbeans.installer.wizard.components.WizardPanel;
|
||||||
|
import org.netbeans.installer.wizard.containers.SwingContainer;
|
||||||
|
import org.netbeans.installer.wizard.containers.SwingFrameContainer;
|
||||||
|
import org.netbeans.installer.wizard.ui.SwingUi;
|
||||||
|
import org.netbeans.installer.wizard.ui.WizardUi;
|
||||||
|
import static org.netbeans.installer.utils.helper.DetailedStatus.INSTALLED_SUCCESSFULLY;
|
||||||
|
import static org.netbeans.installer.utils.helper.DetailedStatus.INSTALLED_WITH_WARNINGS;
|
||||||
|
import static org.netbeans.installer.utils.helper.DetailedStatus.FAILED_TO_INSTALL;
|
||||||
|
import static org.netbeans.installer.utils.helper.DetailedStatus.UNINSTALLED_SUCCESSFULLY;
|
||||||
|
import static org.netbeans.installer.utils.helper.DetailedStatus.UNINSTALLED_WITH_WARNINGS;
|
||||||
|
import static org.netbeans.installer.utils.helper.DetailedStatus.FAILED_TO_UNINSTALL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class PostInstallSummaryPanel extends WizardPanel {
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Instance
|
||||||
|
|
||||||
|
public PostInstallSummaryPanel() {
|
||||||
|
setProperty(TITLE_PROPERTY,
|
||||||
|
DEFAULT_TITLE);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY,
|
||||||
|
DEFAULT_DESCRIPTION);
|
||||||
|
|
||||||
|
setProperty(MESSAGE_TEXT_SUCCESS_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_TEXT_SUCCESS);
|
||||||
|
setProperty(MESSAGE_CONTENT_TYPE_SUCCESS_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS);
|
||||||
|
setProperty(MESSAGE_TEXT_WARNINGS_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_TEXT_WARNINGS);
|
||||||
|
setProperty(MESSAGE_CONTENT_TYPE_WARNINGS_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS);
|
||||||
|
setProperty(MESSAGE_TEXT_ERRORS_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_TEXT_ERRORS);
|
||||||
|
setProperty(MESSAGE_CONTENT_TYPE_ERRORS_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS);
|
||||||
|
|
||||||
|
setProperty(MESSAGE_TEXT_SUCCESS_UNINSTALL_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_TEXT_SUCCESS_UNINSTALL);
|
||||||
|
setProperty(MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL);
|
||||||
|
setProperty(MESSAGE_TEXT_WARNINGS_UNINSTALL_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_TEXT_WARNINGS_UNINSTALL);
|
||||||
|
setProperty(MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL);
|
||||||
|
setProperty(MESSAGE_TEXT_ERRORS_UNINSTALL_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_TEXT_ERRORS_UNINSTALL);
|
||||||
|
setProperty(MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL_PROPERTY,
|
||||||
|
DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL);
|
||||||
|
|
||||||
|
|
||||||
|
setProperty(NEXT_BUTTON_TEXT_PROPERTY,
|
||||||
|
DEFAULT_NEXT_BUTTON_TEXT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPointOfNoReturn() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WizardUi getWizardUi() {
|
||||||
|
if (wizardUi == null) {
|
||||||
|
wizardUi = new PostInstallSummaryPanelUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wizardUi;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Inner Classes
|
||||||
|
public static class PostInstallSummaryPanelUi extends WizardPanelUi {
|
||||||
|
|
||||||
|
protected PostInstallSummaryPanel component;
|
||||||
|
|
||||||
|
public PostInstallSummaryPanelUi(PostInstallSummaryPanel component) {
|
||||||
|
super(component);
|
||||||
|
|
||||||
|
this.component = component;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SwingUi getSwingUi(SwingContainer container) {
|
||||||
|
if (swingUi == null) {
|
||||||
|
swingUi = new PostInstallSummaryPanelSwingUi(component, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getSwingUi(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class PostInstallSummaryPanelSwingUi extends WizardPanelSwingUi {
|
||||||
|
|
||||||
|
protected PostInstallSummaryPanel component;
|
||||||
|
private NbiTextPane messagePaneInstall;
|
||||||
|
private NbiTextPane messagePaneUninstall;
|
||||||
|
|
||||||
|
|
||||||
|
private NbiTextPane messagePaneFinish;
|
||||||
|
private NbiCheckBox runAppNow;
|
||||||
|
private Product app;
|
||||||
|
|
||||||
|
public PostInstallSummaryPanelSwingUi(
|
||||||
|
final PostInstallSummaryPanel component,
|
||||||
|
final SwingContainer container) {
|
||||||
|
super(component, container);
|
||||||
|
|
||||||
|
this.component = component;
|
||||||
|
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void initializeContainer() {
|
||||||
|
super.initializeContainer();
|
||||||
|
|
||||||
|
// set up the back button
|
||||||
|
container.getBackButton().setVisible(false);
|
||||||
|
container.getBackButton().setEnabled(false);
|
||||||
|
|
||||||
|
// set up the next (or finish) button
|
||||||
|
container.getNextButton().setVisible(true);
|
||||||
|
container.getNextButton().setEnabled(true);
|
||||||
|
|
||||||
|
container.getNextButton().setText(
|
||||||
|
component.getProperty(NEXT_BUTTON_TEXT_PROPERTY));
|
||||||
|
|
||||||
|
// set up the cancel button
|
||||||
|
container.getCancelButton().setVisible(false);
|
||||||
|
container.getCancelButton().setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void evaluateNextButtonClick() {
|
||||||
|
container.getNextButton().setEnabled(false);
|
||||||
|
final Product product = app;
|
||||||
|
if (app != null) {
|
||||||
|
ProductConfigurationLogic l = null;
|
||||||
|
try {
|
||||||
|
l = app.getLogic();
|
||||||
|
} catch (InitializationException e) {
|
||||||
|
}
|
||||||
|
final File executable = l != null ? new File(app.getInstallationLocation(), l.getExecutable()) : null;
|
||||||
|
|
||||||
|
if (executable != null && runAppNow.isSelected()) {
|
||||||
|
LogManager.log("... running: " + executable.getAbsolutePath());
|
||||||
|
ProcessBuilder pb = new ProcessBuilder(new String[]{executable.getAbsolutePath()});
|
||||||
|
try {
|
||||||
|
pb.start();
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogManager.log(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.evaluateNextButtonClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void initialize() {
|
||||||
|
final Registry registry = Registry.getInstance();
|
||||||
|
final List<Product> successfulInstall = registry.getProducts(INSTALLED_SUCCESSFULLY);
|
||||||
|
final List<Product> warningInstall = registry.getProducts(INSTALLED_WITH_WARNINGS);
|
||||||
|
final List<Product> errorInstall = registry.getProducts(FAILED_TO_INSTALL);
|
||||||
|
|
||||||
|
final List<Product> successfulUninstall = registry.getProducts(UNINSTALLED_SUCCESSFULLY);
|
||||||
|
final List<Product> warningUninstall = registry.getProducts(UNINSTALLED_WITH_WARNINGS);
|
||||||
|
final List<Product> errorUninstall = registry.getProducts(FAILED_TO_UNINSTALL);
|
||||||
|
|
||||||
|
if (errorInstall.size() > 0) {
|
||||||
|
messagePaneInstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_ERRORS_PROPERTY));
|
||||||
|
messagePaneInstall.setText(StringUtils.format(
|
||||||
|
component.getProperty(MESSAGE_TEXT_ERRORS_PROPERTY),
|
||||||
|
errorInstall.get(0).getDisplayName(),
|
||||||
|
LogManager.getLogFile()));
|
||||||
|
} else if (warningInstall.size() > 0) {
|
||||||
|
messagePaneInstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_WARNINGS_PROPERTY));
|
||||||
|
messagePaneInstall.setText(StringUtils.format(
|
||||||
|
component.getProperty(MESSAGE_TEXT_WARNINGS_PROPERTY),
|
||||||
|
warningInstall.get(0).getDisplayName(),
|
||||||
|
LogManager.getLogFile()));
|
||||||
|
} else if (successfulInstall.size() > 0) {
|
||||||
|
messagePaneInstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_SUCCESS_PROPERTY));
|
||||||
|
messagePaneInstall.setText(StringUtils.format(
|
||||||
|
component.getProperty(MESSAGE_TEXT_SUCCESS_PROPERTY),
|
||||||
|
successfulInstall.get(0).getDisplayName(),
|
||||||
|
LogManager.getLogFile()));
|
||||||
|
} else {
|
||||||
|
messagePaneInstall.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
messagePaneFinish.setVisible(true);
|
||||||
|
messagePaneFinish.setContentType(DEFAULT_MESSAGE_FINISH_PROCESS_CONTENT_TYPE);
|
||||||
|
messagePaneFinish.setText(DEFAULT_MESSAGE_FINISH_PROCESS);
|
||||||
|
|
||||||
|
if (errorUninstall.size() > 0) {
|
||||||
|
messagePaneUninstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL_PROPERTY));
|
||||||
|
messagePaneUninstall.setText(StringUtils.format(
|
||||||
|
component.getProperty(MESSAGE_TEXT_ERRORS_UNINSTALL_PROPERTY),
|
||||||
|
errorUninstall.get(0).getDisplayName(),
|
||||||
|
LogManager.getLogFile()));
|
||||||
|
} else if (warningUninstall.size() > 0) {
|
||||||
|
messagePaneUninstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL_PROPERTY));
|
||||||
|
messagePaneUninstall.setText(StringUtils.format(
|
||||||
|
component.getProperty(MESSAGE_TEXT_WARNINGS_UNINSTALL_PROPERTY),
|
||||||
|
warningUninstall.get(0).getDisplayName(),
|
||||||
|
LogManager.getLogFile()));
|
||||||
|
} else if (successfulUninstall.size() > 0) {
|
||||||
|
messagePaneUninstall.setContentType(component.getProperty(MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL_PROPERTY));
|
||||||
|
messagePaneUninstall.setText(StringUtils.format(
|
||||||
|
component.getProperty(MESSAGE_TEXT_SUCCESS_UNINSTALL_PROPERTY),
|
||||||
|
successfulUninstall.get(0).getDisplayName(),
|
||||||
|
LogManager.getLogFile()));
|
||||||
|
} else {
|
||||||
|
messagePaneUninstall.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
final List<Product> products = new LinkedList<Product>();
|
||||||
|
products.addAll(successfulInstall);
|
||||||
|
products.addAll(warningInstall);
|
||||||
|
runAppNow.setSelected(false);
|
||||||
|
if (!products.isEmpty()) {
|
||||||
|
runAppNow.setText(StringUtils.format(DEFAULT_MESSAGE_LAUNCH_APPLICATION_NOW,
|
||||||
|
products.get(0).getDisplayName()));
|
||||||
|
runAppNow.doClick();
|
||||||
|
app = products.get(0);
|
||||||
|
} else {
|
||||||
|
runAppNow.setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initComponents() {
|
||||||
|
// messagePaneInstall ///////////////////////////////////////////////////
|
||||||
|
messagePaneInstall = new NbiTextPane();
|
||||||
|
|
||||||
|
// messagePaneUninstall /////////////////////////////////////////////////
|
||||||
|
messagePaneUninstall = new NbiTextPane();
|
||||||
|
|
||||||
|
// messagePaneRunApplication ///////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
messagePaneFinish = new NbiTextPane();
|
||||||
|
|
||||||
|
runAppNow = new NbiCheckBox();
|
||||||
|
|
||||||
|
|
||||||
|
// this /////////////////////////////////////////////////////////////////
|
||||||
|
add(messagePaneInstall, new GridBagConstraints(
|
||||||
|
0, 0, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(31, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(messagePaneUninstall, new GridBagConstraints(
|
||||||
|
0, 1, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.BOTH, // fill
|
||||||
|
new Insets(31, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
add(messagePaneFinish, new GridBagConstraints(
|
||||||
|
0, 3, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 1.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(11, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
/*
|
||||||
|
add(new NbiPanel(), new GridBagConstraints(
|
||||||
|
0, 4, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 1.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.CENTER, // anchor
|
||||||
|
GridBagConstraints.BOTH, // fill
|
||||||
|
new Insets(0, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
*/
|
||||||
|
add(runAppNow, new GridBagConstraints(
|
||||||
|
0, 4, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 1.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(11, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (container instanceof SwingFrameContainer) {
|
||||||
|
final SwingFrameContainer sfc = (SwingFrameContainer) container;
|
||||||
|
sfc.addWindowListener(new WindowAdapter() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowClosing(WindowEvent event) {
|
||||||
|
SwingUi currentUi = component.getWizardUi().getSwingUi(container);
|
||||||
|
if (currentUi != null) {
|
||||||
|
if (!container.getCancelButton().isEnabled() && // cancel button is disabled
|
||||||
|
!container.getCancelButton().isVisible() && // no cancel button at this panel
|
||||||
|
!container.getBackButton().isVisible() && // no back button at this panel
|
||||||
|
container.getNextButton().isVisible() && // next button is visible
|
||||||
|
container.getNextButton().isEnabled()) { // and enabled
|
||||||
|
currentUi.evaluateNextButtonClick();
|
||||||
|
sfc.removeWindowListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
public static final String MESSAGE_TEXT_SUCCESS_PROPERTY =
|
||||||
|
"message.text.success"; // NOI18N
|
||||||
|
public static final String MESSAGE_CONTENT_TYPE_SUCCESS_PROPERTY =
|
||||||
|
"message.content.type.success"; // NOI18N
|
||||||
|
public static final String MESSAGE_TEXT_WARNINGS_PROPERTY =
|
||||||
|
"message.text.warnings"; // NOI18N
|
||||||
|
public static final String MESSAGE_CONTENT_TYPE_WARNINGS_PROPERTY =
|
||||||
|
"message.content.type.warnings"; // NOI18N
|
||||||
|
public static final String MESSAGE_TEXT_ERRORS_PROPERTY =
|
||||||
|
"message.text.errors"; // NOI18N
|
||||||
|
public static final String MESSAGE_CONTENT_TYPE_ERRORS_PROPERTY =
|
||||||
|
"message.content.type.errors"; // NOI18N
|
||||||
|
public static final String MESSAGE_TEXT_SUCCESS_UNINSTALL_PROPERTY =
|
||||||
|
"message.text.success.uninstall"; // NOI18N
|
||||||
|
public static final String MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL_PROPERTY =
|
||||||
|
"message.content.type.success.uninstall"; // NOI18N
|
||||||
|
public static final String MESSAGE_TEXT_WARNINGS_UNINSTALL_PROPERTY =
|
||||||
|
"message.text.warnings.uninstall"; // NOI18N
|
||||||
|
public static final String MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL_PROPERTY =
|
||||||
|
"message.content.type.warnings.uninstall"; // NOI18N
|
||||||
|
public static final String MESSAGE_TEXT_ERRORS_UNINSTALL_PROPERTY =
|
||||||
|
"message.text.errors.uninstall"; // NOI18N
|
||||||
|
public static final String MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL_PROPERTY =
|
||||||
|
"message.content.type.errors.uninstall"; // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_TEXT_SUCCESS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.success"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.content.type.success"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_TEXT_WARNINGS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.warnings"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.content.type.warnings"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_TEXT_ERRORS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.errors"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.content.type.errors"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_TEXT_SUCCESS_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.success.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_SUCCESS_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.content.type.success.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_TEXT_WARNINGS_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.warnings.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_WARNINGS_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.content.type.warnings.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_TEXT_ERRORS_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.errors.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_CONTENT_TYPE_ERRORS_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.content.type.errors.uninstall"); // NOI18N
|
||||||
|
|
||||||
|
public static final String DEFAULT_TITLE = ResourceUtils.getString(
|
||||||
|
PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.title"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESCRIPTION =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.description"); // NOI18N
|
||||||
|
public static final String DEFAULT_NEXT_BUTTON_TEXT =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.next.button.text"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_FINISH_PROCESS =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.finish"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_FINISH_PROCESS_CONTENT_TYPE =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.text.finish.content.type"); // NOI18N
|
||||||
|
public static final String DEFAULT_MESSAGE_LAUNCH_APPLICATION_NOW =
|
||||||
|
ResourceUtils.getString(PostInstallSummaryPanel.class,
|
||||||
|
"PoISP.message.run.application.now");//NOI18N
|
||||||
|
}
|
@ -0,0 +1,620 @@
|
|||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU General
|
||||||
|
* Public License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
* License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
* compliance with the License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
* License for the specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header Notice in
|
||||||
|
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
* designates this particular file as subject to the "Classpath" exception as
|
||||||
|
* provided by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the License Header,
|
||||||
|
* with the fields enclosed by brackets [] replaced by your own identifying
|
||||||
|
* information: "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
* this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
* you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
* distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above. However, if
|
||||||
|
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
|
||||||
|
* the option applies only if the new code is made subject to such option by the
|
||||||
|
* copyright holder.
|
||||||
|
*/
|
||||||
|
package org.mycompany.installer.wizard.components.panels;
|
||||||
|
|
||||||
|
import java.awt.ComponentOrientation;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.swing.border.EmptyBorder;
|
||||||
|
import org.netbeans.installer.Installer;
|
||||||
|
import org.netbeans.installer.product.Registry;
|
||||||
|
import org.netbeans.installer.product.RegistryNode;
|
||||||
|
import org.netbeans.installer.product.RegistryType;
|
||||||
|
import org.netbeans.installer.product.components.Product;
|
||||||
|
import org.netbeans.installer.utils.ErrorManager;
|
||||||
|
import org.netbeans.installer.utils.FileUtils;
|
||||||
|
import org.netbeans.installer.utils.LogManager;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.SystemUtils;
|
||||||
|
import org.mycompany.installer.utils.applications.NetBeansRCPUtils;
|
||||||
|
import org.netbeans.installer.utils.exceptions.NativeException;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiCheckBox;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiLabel;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiPanel;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiTextPane;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelSwingUi;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelUi;
|
||||||
|
import org.netbeans.installer.wizard.containers.SwingContainer;
|
||||||
|
import org.netbeans.installer.wizard.ui.SwingUi;
|
||||||
|
import org.netbeans.installer.wizard.ui.WizardUi;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class PreInstallSummaryPanel extends ErrorMessagePanel {
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Instance
|
||||||
|
|
||||||
|
public PreInstallSummaryPanel() {
|
||||||
|
setProperty(TITLE_PROPERTY,
|
||||||
|
DEFAULT_TITLE);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY,
|
||||||
|
DEFAULT_DESCRIPTION);
|
||||||
|
|
||||||
|
setProperty(INSTALLATION_FOLDER_PROPERTY,
|
||||||
|
DEFAULT_INSTALLATION_FOLDER);
|
||||||
|
|
||||||
|
setProperty(UNINSTALL_LABEL_TEXT_PROPERTY,
|
||||||
|
DEFAULT_UNINSTALL_LABEL_TEXT);
|
||||||
|
|
||||||
|
setProperty(INSTALLATION_SIZE_PROPERTY,
|
||||||
|
DEFAULT_INSTALLATION_SIZE);
|
||||||
|
setProperty(DOWNLOAD_SIZE_PROPERTY,
|
||||||
|
DEFAULT_DOWNLOAD_SIZE);
|
||||||
|
|
||||||
|
setProperty(NEXT_BUTTON_TEXT_PROPERTY,
|
||||||
|
DEFAULT_NEXT_BUTTON_TEXT);
|
||||||
|
|
||||||
|
setProperty(ERROR_NOT_ENOUGH_SPACE_PROPERTY,
|
||||||
|
DEFAULT_ERROR_NOT_ENOUGH_SPACE);
|
||||||
|
setProperty(ERROR_CANNOT_CHECK_SPACE_PROPERTY,
|
||||||
|
DEFAULT_ERROR_CANNOT_CHECK_SPACE);
|
||||||
|
setProperty(ERROR_LOGIC_ACCESS_PROPERTY,
|
||||||
|
DEFAULT_ERROR_LOGIC_ACCESS);
|
||||||
|
setProperty(ERROR_FSROOTS_PROPERTY,
|
||||||
|
DEFAULT_ERROR_FSROOTS);
|
||||||
|
setProperty(ERROR_NON_EXISTENT_ROOT_PROPERTY,
|
||||||
|
DEFAULT_ERROR_NON_EXISTENT_ROOT);
|
||||||
|
setProperty(ERROR_CANNOT_WRITE_PROPERTY,
|
||||||
|
DEFAULT_ERROR_CANNOT_WRITE);
|
||||||
|
setProperty(REMOVE_APP_USERDIR_TEXT_PROPERTY,
|
||||||
|
DEFAULT_REMOVE_APP_USERDIR_TEXT);
|
||||||
|
setProperty(REMOVE_APP_USERDIR_CHECKBOX_PROPERTY,
|
||||||
|
DEFAULT_REMOVE_APP_USERDIR_CHECKBOX);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WizardUi getWizardUi() {
|
||||||
|
if (wizardUi == null) {
|
||||||
|
wizardUi = new PreInstallSummaryPanelUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wizardUi;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize() {
|
||||||
|
final List<Product> toInstall =
|
||||||
|
Registry.getInstance().getProductsToInstall();
|
||||||
|
|
||||||
|
if (toInstall.size() > 0) {
|
||||||
|
setProperty(NEXT_BUTTON_TEXT_PROPERTY, DEFAULT_NEXT_BUTTON_TEXT);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY, DEFAULT_DESCRIPTION);
|
||||||
|
} else {
|
||||||
|
setProperty(NEXT_BUTTON_TEXT_PROPERTY, DEFAULT_NEXT_BUTTON_TEXT_UNINSTALL);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY, DEFAULT_DESCRIPTION_UNINSTALL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Inner Classes
|
||||||
|
public static class PreInstallSummaryPanelUi extends ErrorMessagePanelUi {
|
||||||
|
|
||||||
|
protected PreInstallSummaryPanel component;
|
||||||
|
|
||||||
|
public PreInstallSummaryPanelUi(PreInstallSummaryPanel component) {
|
||||||
|
super(component);
|
||||||
|
|
||||||
|
this.component = component;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SwingUi getSwingUi(SwingContainer container) {
|
||||||
|
if (swingUi == null) {
|
||||||
|
swingUi = new PreInstallSummaryPanelSwingUi(component, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getSwingUi(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class PreInstallSummaryPanelSwingUi extends ErrorMessagePanelSwingUi {
|
||||||
|
|
||||||
|
protected PreInstallSummaryPanel component;
|
||||||
|
private NbiTextPane locationsPane;
|
||||||
|
private NbiLabel uninstallListLabel;
|
||||||
|
private NbiTextPane uninstallListPane;
|
||||||
|
private NbiLabel installationSizeLabel;
|
||||||
|
private NbiLabel installationSizeValue;
|
||||||
|
private NbiLabel downloadSizeLabel;
|
||||||
|
private NbiLabel downloadSizeValue;
|
||||||
|
private NbiCheckBox removeUserdirCheckbox;
|
||||||
|
private NbiTextPane removeUserdirPane;
|
||||||
|
private NbiPanel spacer;
|
||||||
|
private int gridy = 0;
|
||||||
|
|
||||||
|
public PreInstallSummaryPanelSwingUi(
|
||||||
|
final PreInstallSummaryPanel component,
|
||||||
|
final SwingContainer container) {
|
||||||
|
super(component, container);
|
||||||
|
|
||||||
|
this.component = component;
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected ////////////////////////////////////////////////////////////////
|
||||||
|
@Override
|
||||||
|
protected void initializeContainer() {
|
||||||
|
super.initializeContainer();
|
||||||
|
|
||||||
|
container.getNextButton().setText(
|
||||||
|
panel.getProperty(NEXT_BUTTON_TEXT_PROPERTY));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize() {
|
||||||
|
final Registry registry = Registry.getInstance();
|
||||||
|
|
||||||
|
final StringBuilder text = new StringBuilder();
|
||||||
|
long installationSize = 0;
|
||||||
|
long downloadSize = 0;
|
||||||
|
|
||||||
|
for (Product product : registry.getProductsToInstall()) {
|
||||||
|
installationSize += product.getRequiredDiskSpace();
|
||||||
|
downloadSize += product.getDownloadSize();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// add top-level components like nb-base, glassfish, tomcat, jdk
|
||||||
|
for (Product product : registry.getProductsToInstall()) {
|
||||||
|
text.append(StringUtils.LF);
|
||||||
|
text.append(StringUtils.format(panel.getProperty(INSTALLATION_FOLDER_PROPERTY),
|
||||||
|
product.getDisplayName()));
|
||||||
|
text.append(StringUtils.LF);
|
||||||
|
text.append(" " + product.getInstallationLocation());
|
||||||
|
text.append(StringUtils.LF);
|
||||||
|
}
|
||||||
|
locationsPane.setText(text);
|
||||||
|
|
||||||
|
List<Product> toUninstall = registry.getProductsToUninstall();
|
||||||
|
String uninstallLabelText = toUninstall.size() > 0 ? StringUtils.format(
|
||||||
|
panel.getProperty(UNINSTALL_LABEL_TEXT_PROPERTY),
|
||||||
|
toUninstall.get(0).getDisplayName()) : "";
|
||||||
|
|
||||||
|
uninstallListLabel.setText(uninstallLabelText);
|
||||||
|
|
||||||
|
|
||||||
|
installationSizeLabel.setText(
|
||||||
|
panel.getProperty(INSTALLATION_SIZE_PROPERTY));
|
||||||
|
installationSizeValue.setText(StringUtils.formatSize(
|
||||||
|
installationSize));
|
||||||
|
|
||||||
|
downloadSizeLabel.setText(
|
||||||
|
panel.getProperty(DOWNLOAD_SIZE_PROPERTY));
|
||||||
|
downloadSizeValue.setText(StringUtils.formatSize(
|
||||||
|
downloadSize));
|
||||||
|
|
||||||
|
if (registry.getProductsToInstall().size() == 0) {
|
||||||
|
locationsPane.setVisible(false);
|
||||||
|
installationSizeLabel.setVisible(false);
|
||||||
|
installationSizeValue.setVisible(false);
|
||||||
|
} else {
|
||||||
|
locationsPane.setVisible(true);
|
||||||
|
installationSizeLabel.setVisible(true);
|
||||||
|
installationSizeValue.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (registry.getProductsToUninstall().size() == 0) {
|
||||||
|
uninstallListLabel.setVisible(false);
|
||||||
|
uninstallListPane.setVisible(false);
|
||||||
|
} else {
|
||||||
|
uninstallListLabel.setVisible(true);
|
||||||
|
uninstallListPane.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadSizeLabel.setVisible(false);
|
||||||
|
downloadSizeValue.setVisible(false);
|
||||||
|
for (RegistryNode remoteNode : registry.getNodes(RegistryType.REMOTE)) {
|
||||||
|
if (remoteNode.isVisible()) {
|
||||||
|
downloadSizeLabel.setVisible(true);
|
||||||
|
downloadSizeValue.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Boolean.getBoolean(REMOVE_APP_USERDIR_PROPERTY)) {
|
||||||
|
removeUserdirCheckbox.doClick();
|
||||||
|
}
|
||||||
|
|
||||||
|
removeUserdirCheckbox.setVisible(false);
|
||||||
|
removeUserdirPane.setVisible(false);
|
||||||
|
|
||||||
|
for (Product product : Registry.getInstance().getProductsToUninstall()) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
File installLocation = product.getInstallationLocation();
|
||||||
|
LogManager.log("... product installation directory: " + installLocation);
|
||||||
|
File userDir = NetBeansRCPUtils.getApplicationUserDirFile(installLocation);
|
||||||
|
LogManager.log("... product userdir: " + userDir);
|
||||||
|
if (FileUtils.exists(userDir) && FileUtils.canWrite(userDir)) {
|
||||||
|
removeUserdirCheckbox.setText(
|
||||||
|
StringUtils.format(
|
||||||
|
panel.getProperty(REMOVE_APP_USERDIR_CHECKBOX_PROPERTY),
|
||||||
|
userDir.getAbsolutePath()));
|
||||||
|
removeUserdirCheckbox.setBorder(new EmptyBorder(0, 0, 0, 0));
|
||||||
|
removeUserdirCheckbox.setVisible(true);
|
||||||
|
|
||||||
|
removeUserdirPane.setVisible(true);
|
||||||
|
removeUserdirPane.setContentType("text/html");
|
||||||
|
|
||||||
|
removeUserdirPane.setText(
|
||||||
|
StringUtils.format(
|
||||||
|
panel.getProperty(REMOVE_APP_USERDIR_TEXT_PROPERTY),
|
||||||
|
product.getDisplayName()));
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogManager.log(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//if(productCheckboxList!=null) {
|
||||||
|
// for(Pair <Product, NbiCheckBox> pair : productCheckboxList) {
|
||||||
|
// pair.getSecond().doClick();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
super.initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String validateInput() {
|
||||||
|
try {
|
||||||
|
if (!Boolean.getBoolean(SystemUtils.NO_SPACE_CHECK_PROPERTY)) {
|
||||||
|
final List<File> roots =
|
||||||
|
SystemUtils.getFileSystemRoots();
|
||||||
|
final List<Product> toInstall =
|
||||||
|
Registry.getInstance().getProductsToInstall();
|
||||||
|
final Map<File, Long> spaceMap =
|
||||||
|
new HashMap<File, Long>();
|
||||||
|
|
||||||
|
LogManager.log("Available roots : " + StringUtils.asString(roots));
|
||||||
|
|
||||||
|
File downloadDataDirRoot = FileUtils.getRoot(
|
||||||
|
Installer.getInstance().getLocalDirectory(), roots);
|
||||||
|
long downloadSize = 0;
|
||||||
|
for (Product product : toInstall) {
|
||||||
|
downloadSize += product.getDownloadSize();
|
||||||
|
}
|
||||||
|
// the critical check point - we download all the data
|
||||||
|
spaceMap.put(downloadDataDirRoot, new Long(downloadSize));
|
||||||
|
long lastDataSize = 0;
|
||||||
|
for (Product product : toInstall) {
|
||||||
|
final File installLocation = product.getInstallationLocation();
|
||||||
|
final File root = FileUtils.getRoot(installLocation, roots);
|
||||||
|
final long productSize = product.getRequiredDiskSpace();
|
||||||
|
|
||||||
|
LogManager.log(" [" + root + "] <- " + installLocation);
|
||||||
|
|
||||||
|
if (root != null) {
|
||||||
|
Long ddSize = spaceMap.get(downloadDataDirRoot);
|
||||||
|
// remove space that was freed after the remove of previos product data
|
||||||
|
spaceMap.put(downloadDataDirRoot,
|
||||||
|
Long.valueOf(ddSize - lastDataSize));
|
||||||
|
|
||||||
|
// add space required for next product installation
|
||||||
|
Long size = spaceMap.get(root);
|
||||||
|
size = Long.valueOf(
|
||||||
|
(size != null ? size.longValue() : 0L)
|
||||||
|
+ productSize);
|
||||||
|
spaceMap.put(root, size);
|
||||||
|
lastDataSize = product.getDownloadSize();
|
||||||
|
} else {
|
||||||
|
return StringUtils.format(
|
||||||
|
panel.getProperty(ERROR_NON_EXISTENT_ROOT_PROPERTY),
|
||||||
|
product, installLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (File root : spaceMap.keySet()) {
|
||||||
|
try {
|
||||||
|
final long availableSpace =
|
||||||
|
SystemUtils.getFreeSpace(root);
|
||||||
|
final long requiredSpace =
|
||||||
|
spaceMap.get(root) + REQUIRED_SPACE_ADDITION;
|
||||||
|
|
||||||
|
if (availableSpace < requiredSpace) {
|
||||||
|
return StringUtils.format(
|
||||||
|
panel.getProperty(ERROR_NOT_ENOUGH_SPACE_PROPERTY),
|
||||||
|
root,
|
||||||
|
StringUtils.formatSize(requiredSpace - availableSpace));
|
||||||
|
}
|
||||||
|
} catch (NativeException e) {
|
||||||
|
ErrorManager.notifyError(
|
||||||
|
panel.getProperty(ERROR_CANNOT_CHECK_SPACE_PROPERTY),
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final List<Product> toUninstall =
|
||||||
|
Registry.getInstance().getProductsToUninstall();
|
||||||
|
for (Product product : toUninstall) {
|
||||||
|
if (!FileUtils.canWrite(product.getInstallationLocation())) {
|
||||||
|
return StringUtils.format(
|
||||||
|
panel.getProperty(ERROR_CANNOT_WRITE_PROPERTY),
|
||||||
|
product,
|
||||||
|
product.getInstallationLocation());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
ErrorManager.notifyError(
|
||||||
|
panel.getProperty(ERROR_FSROOTS_PROPERTY), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// private //////////////////////////////////////////////////////////////////
|
||||||
|
private void initComponents() {
|
||||||
|
gridy = 0;
|
||||||
|
|
||||||
|
// locationsPane ////////////////////////////////////////////////////////
|
||||||
|
locationsPane = new NbiTextPane();
|
||||||
|
|
||||||
|
// uninstallListPane ////////////////////////////////////////////////////
|
||||||
|
uninstallListPane = new NbiTextPane();
|
||||||
|
|
||||||
|
// uninstallListLabel ///////////////////////////////////////////////////
|
||||||
|
uninstallListLabel = new NbiLabel();
|
||||||
|
uninstallListLabel.setLabelFor(uninstallListPane);
|
||||||
|
|
||||||
|
// installationSizeValue ////////////////////////////////////////////////
|
||||||
|
installationSizeValue = new NbiLabel();
|
||||||
|
//installationSizeValue.setFocusable(true);
|
||||||
|
|
||||||
|
// installationSizeLabel ////////////////////////////////////////////////
|
||||||
|
installationSizeLabel = new NbiLabel();
|
||||||
|
installationSizeLabel.setLabelFor(installationSizeValue);
|
||||||
|
|
||||||
|
// downloadSizeValue ////////////////////////////////////////////////////
|
||||||
|
downloadSizeValue = new NbiLabel();
|
||||||
|
//downloadSizeValue.setFocusable(true);
|
||||||
|
|
||||||
|
// downloadSizeLabel ////////////////////////////////////////////////////
|
||||||
|
downloadSizeLabel = new NbiLabel();
|
||||||
|
downloadSizeLabel.setLabelFor(downloadSizeValue);
|
||||||
|
|
||||||
|
// spacer ///////////////////////////////////////////////////////////////
|
||||||
|
spacer = new NbiPanel();
|
||||||
|
|
||||||
|
// this /////////////////////////////////////////////////////////////////
|
||||||
|
add(locationsPane, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(11, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(uninstallListLabel, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(11, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(uninstallListPane, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(0, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
int gridy0 = gridy;
|
||||||
|
gridy++;
|
||||||
|
|
||||||
|
removeUserdirPane = new NbiTextPane();
|
||||||
|
add(removeUserdirPane, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(11, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
removeUserdirCheckbox = new NbiCheckBox();
|
||||||
|
add(removeUserdirCheckbox, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.PAGE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(4, 20, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
removeUserdirCheckbox.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
System.setProperty(REMOVE_APP_USERDIR_PROPERTY,
|
||||||
|
"" + removeUserdirCheckbox.isSelected());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
add(installationSizeLabel, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(22, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(installationSizeValue, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(4, 22, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(downloadSizeLabel, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(4, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(downloadSizeValue, new GridBagConstraints(
|
||||||
|
0, gridy++, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(4, 22, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(spacer, new GridBagConstraints(
|
||||||
|
0, gridy + 10, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 1.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.CENTER, // anchor
|
||||||
|
GridBagConstraints.BOTH, // fill
|
||||||
|
new Insets(0, 11, 0, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
public static final String INSTALLATION_FOLDER_PROPERTY =
|
||||||
|
"installation.folder"; // NOI18N
|
||||||
|
public static final String UNINSTALL_LABEL_TEXT_PROPERTY =
|
||||||
|
"uninstall.list.label.text"; // NOI18N
|
||||||
|
public static final String INSTALLATION_SIZE_PROPERTY =
|
||||||
|
"installation.size"; // NOI18N
|
||||||
|
public static final String DOWNLOAD_SIZE_PROPERTY =
|
||||||
|
"download.size"; // NOI18N
|
||||||
|
public static final String ERROR_NOT_ENOUGH_SPACE_PROPERTY =
|
||||||
|
"error.not.enough.space"; // NOI18N
|
||||||
|
public static final String ERROR_CANNOT_CHECK_SPACE_PROPERTY =
|
||||||
|
"error.cannot.check.space"; // NOI18N
|
||||||
|
public static final String ERROR_LOGIC_ACCESS_PROPERTY =
|
||||||
|
"error.logic.access"; // NOI18N
|
||||||
|
public static final String ERROR_FSROOTS_PROPERTY =
|
||||||
|
"error.fsroots"; // NOI18N
|
||||||
|
public static final String ERROR_NON_EXISTENT_ROOT_PROPERTY =
|
||||||
|
"error.non.existent.root"; // NOI18N
|
||||||
|
public static final String ERROR_CANNOT_WRITE_PROPERTY =
|
||||||
|
"error.cannot.write"; // NOI18N
|
||||||
|
public static final String REMOVE_APP_USERDIR_PROPERTY =
|
||||||
|
"remove.app.userdir";
|
||||||
|
public static final String REMOVE_APP_USERDIR_TEXT_PROPERTY =
|
||||||
|
"remove.app.userdir.text";
|
||||||
|
public static final String REMOVE_APP_USERDIR_CHECKBOX_PROPERTY =
|
||||||
|
"remove.app.userdir.checkbox";
|
||||||
|
public static final String DEFAULT_TITLE =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.title"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESCRIPTION =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.description"); // NOI18N
|
||||||
|
public static final String DEFAULT_DESCRIPTION_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.description.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_INSTALLATION_FOLDER =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.installation.folder"); // NOI18N
|
||||||
|
public static final String DEFAULT_UNINSTALL_LABEL_TEXT =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.uninstall.list.label.text"); // NOI18N
|
||||||
|
public static final String DEFAULT_INSTALLATION_SIZE =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.installation.size"); // NOI18N
|
||||||
|
public static final String DEFAULT_DOWNLOAD_SIZE =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.download.size"); // NOI18N
|
||||||
|
public static final String DEFAULT_NEXT_BUTTON_TEXT =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.next.button.text"); // NOI18N
|
||||||
|
public static final String DEFAULT_NEXT_BUTTON_TEXT_UNINSTALL =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.next.button.text.uninstall"); // NOI18N
|
||||||
|
public static final String DEFAULT_ERROR_NOT_ENOUGH_SPACE =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.error.not.enough.space"); // NOI18N
|
||||||
|
public static final String DEFAULT_ERROR_CANNOT_CHECK_SPACE =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.error.cannot.check.space");// NOI18N
|
||||||
|
public static final String DEFAULT_ERROR_LOGIC_ACCESS =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.error.logic.access");// NOI18N
|
||||||
|
public static final String DEFAULT_ERROR_FSROOTS =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.error.fsroots"); // NOI18N
|
||||||
|
public static final String DEFAULT_ERROR_NON_EXISTENT_ROOT =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.error.non.existent.root"); // NOI18N
|
||||||
|
public static final String DEFAULT_ERROR_CANNOT_WRITE =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.error.cannot.write"); // NOI18N
|
||||||
|
public static final String DEFAULT_REMOVE_APP_USERDIR_TEXT =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.remove.app.userdir.text"); // NOI18N
|
||||||
|
|
||||||
|
public static final String DEFAULT_REMOVE_APP_USERDIR_CHECKBOX =
|
||||||
|
ResourceUtils.getString(PreInstallSummaryPanel.class,
|
||||||
|
"PrISP.remove.app.userdir.checkbox"); // NOI18N
|
||||||
|
public static final long REQUIRED_SPACE_ADDITION =
|
||||||
|
10L * 1024L * 1024L; // 10MB
|
||||||
|
}
|
@ -0,0 +1,333 @@
|
|||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU General
|
||||||
|
* Public License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
* License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
* compliance with the License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
* License for the specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header Notice in
|
||||||
|
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
* designates this particular file as subject to the "Classpath" exception as
|
||||||
|
* provided by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the License Header,
|
||||||
|
* with the fields enclosed by brackets [] replaced by your own identifying
|
||||||
|
* information: "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
* this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
* you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
* distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above. However, if
|
||||||
|
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
|
||||||
|
* the option applies only if the new code is made subject to such option by the
|
||||||
|
* copyright holder.
|
||||||
|
*/
|
||||||
|
package org.mycompany.installer.wizard.components.panels;
|
||||||
|
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.Insets;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
import org.netbeans.installer.product.Registry;
|
||||||
|
import org.netbeans.installer.product.components.Product;
|
||||||
|
import org.netbeans.installer.utils.ErrorManager;
|
||||||
|
import org.netbeans.installer.utils.LogManager;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.StringUtils;
|
||||||
|
import org.netbeans.installer.utils.SystemUtils;
|
||||||
|
import org.netbeans.installer.utils.exceptions.InitializationException;
|
||||||
|
import org.netbeans.installer.utils.helper.Platform;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiPanel;
|
||||||
|
import org.netbeans.installer.utils.helper.swing.NbiTextPane;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelSwingUi;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.ErrorMessagePanel.ErrorMessagePanelUi;
|
||||||
|
import org.netbeans.installer.wizard.containers.SwingContainer;
|
||||||
|
import org.netbeans.installer.wizard.ui.SwingUi;
|
||||||
|
import org.netbeans.installer.wizard.ui.WizardUi;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class WelcomePanel extends ErrorMessagePanel {
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
private Registry bundledRegistry;
|
||||||
|
private Registry defaultRegistry;
|
||||||
|
|
||||||
|
public WelcomePanel() {
|
||||||
|
setProperty(TITLE_PROPERTY,
|
||||||
|
DEFAULT_TITLE);
|
||||||
|
setProperty(DESCRIPTION_PROPERTY,
|
||||||
|
DEFAULT_DESCRIPTION);
|
||||||
|
|
||||||
|
setProperty(WELCOME_TEXT_PROPERTY,
|
||||||
|
DEFAULT_WELCOME_TEXT);
|
||||||
|
|
||||||
|
setProperty(WELCOME_ALREADY_INSTALLED_TEXT_PROPERTY,
|
||||||
|
DEFAULT_WELCOME_ALREADY_INSTALLED_TEXT);
|
||||||
|
setProperty(WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT_PROPERTY,
|
||||||
|
DEFAULT_WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT);
|
||||||
|
|
||||||
|
try {
|
||||||
|
defaultRegistry = Registry.getInstance();
|
||||||
|
bundledRegistry = new Registry();
|
||||||
|
|
||||||
|
final String bundledRegistryUri = System.getProperty(
|
||||||
|
Registry.BUNDLED_PRODUCT_REGISTRY_URI_PROPERTY);
|
||||||
|
if (bundledRegistryUri != null) {
|
||||||
|
bundledRegistry.loadProductRegistry(bundledRegistryUri);
|
||||||
|
} else {
|
||||||
|
bundledRegistry.loadProductRegistry(
|
||||||
|
Registry.DEFAULT_BUNDLED_PRODUCT_REGISTRY_URI);
|
||||||
|
}
|
||||||
|
} catch (InitializationException e) {
|
||||||
|
ErrorManager.notifyError("Cannot load bundled registry", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Registry getBundledRegistry() {
|
||||||
|
return bundledRegistry;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WizardUi getWizardUi() {
|
||||||
|
if (wizardUi == null) {
|
||||||
|
wizardUi = new WelcomePanelUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wizardUi;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canExecuteForward() {
|
||||||
|
return canExecute();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canExecuteBackward() {
|
||||||
|
return canExecute();
|
||||||
|
}
|
||||||
|
|
||||||
|
// private //////////////////////////////////////////////////////////////////////
|
||||||
|
private boolean canExecute() {
|
||||||
|
return bundledRegistry.getNodes().size() > 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Inner Classes
|
||||||
|
public static class WelcomePanelUi extends ErrorMessagePanelUi {
|
||||||
|
|
||||||
|
protected WelcomePanel component;
|
||||||
|
|
||||||
|
public WelcomePanelUi(WelcomePanel component) {
|
||||||
|
super(component);
|
||||||
|
|
||||||
|
this.component = component;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SwingUi getSwingUi(SwingContainer container) {
|
||||||
|
if (swingUi == null) {
|
||||||
|
swingUi = new WelcomePanelSwingUi(component, container);
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getSwingUi(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class WelcomePanelSwingUi extends ErrorMessagePanelSwingUi {
|
||||||
|
|
||||||
|
protected WelcomePanel panel;
|
||||||
|
private NbiTextPane textPane;
|
||||||
|
|
||||||
|
private NbiPanel leftImagePanel;
|
||||||
|
ValidatingThread validatingThread;
|
||||||
|
|
||||||
|
public WelcomePanelSwingUi(
|
||||||
|
final WelcomePanel component,
|
||||||
|
final SwingContainer container) {
|
||||||
|
super(component, container);
|
||||||
|
|
||||||
|
this.panel = component;
|
||||||
|
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTitle() {
|
||||||
|
return null; // the welcome page does not have a title
|
||||||
|
}
|
||||||
|
|
||||||
|
// protected ////////////////////////////////////////////////////////////////
|
||||||
|
@Override
|
||||||
|
protected void initializeContainer() {
|
||||||
|
super.initializeContainer();
|
||||||
|
|
||||||
|
container.getBackButton().setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize() {
|
||||||
|
|
||||||
|
textPane.setContentType("text/html");
|
||||||
|
textPane.setText(StringUtils.format(panel.getProperty(WELCOME_TEXT_PROPERTY)));
|
||||||
|
List<Product> toInstall = Registry.getInstance().getProductsToInstall();
|
||||||
|
if(toInstall.isEmpty()) {
|
||||||
|
List <Product> list = panel.getBundledRegistry().getProducts();
|
||||||
|
if(list.size() == 1) {
|
||||||
|
if(SystemUtils.getCurrentPlatform().isCompatibleWith(list.get(0).getPlatforms())) {
|
||||||
|
File installationLocation = list.get(0).getInstallationLocation();
|
||||||
|
textPane.setText(
|
||||||
|
StringUtils.format(
|
||||||
|
panel.getProperty(WELCOME_ALREADY_INSTALLED_TEXT_PROPERTY),
|
||||||
|
list.get(0).getDisplayName(),
|
||||||
|
installationLocation.getAbsolutePath()));
|
||||||
|
} else {
|
||||||
|
textPane.setText(
|
||||||
|
StringUtils.format(
|
||||||
|
WELCOME_INCOMPATIBLE_PLATFORM_TEXT,
|
||||||
|
list.get(0).getDisplayName()));
|
||||||
|
}
|
||||||
|
container.getCancelButton().setVisible(false);
|
||||||
|
container.getNextButton().setText(panel.getProperty(
|
||||||
|
WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT_PROPERTY));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super.initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
// private //////////////////////////////////////////////////////////////////
|
||||||
|
private void initComponents() {
|
||||||
|
// textPane /////////////////////////////////////////////////////////////
|
||||||
|
textPane = new NbiTextPane();
|
||||||
|
|
||||||
|
leftImagePanel = new NbiPanel();
|
||||||
|
int width = 0;
|
||||||
|
int height = 0;
|
||||||
|
final String topLeftImage = SystemUtils.resolveString(
|
||||||
|
System.getProperty(
|
||||||
|
WELCOME_PAGE_LEFT_TOP_IMAGE_PROPERTY));
|
||||||
|
final String bottomLeftImage = SystemUtils.resolveString(
|
||||||
|
System.getProperty(
|
||||||
|
WELCOME_PAGE_LEFT_BOTTOM_IMAGE_PROPERTY));
|
||||||
|
|
||||||
|
int bottomAnchor = NbiPanel.ANCHOR_BOTTOM_LEFT;
|
||||||
|
|
||||||
|
if (topLeftImage != null) {
|
||||||
|
leftImagePanel.setBackgroundImage(topLeftImage, ANCHOR_TOP_LEFT);
|
||||||
|
width = leftImagePanel.getBackgroundImage(NbiPanel.ANCHOR_TOP_LEFT).getIconWidth();
|
||||||
|
height += leftImagePanel.getBackgroundImage(NbiPanel.ANCHOR_TOP_LEFT).getIconHeight();
|
||||||
|
}
|
||||||
|
if (bottomLeftImage != null) {
|
||||||
|
leftImagePanel.setBackgroundImage(bottomLeftImage, bottomAnchor);
|
||||||
|
width = leftImagePanel.getBackgroundImage(bottomAnchor).getIconWidth();
|
||||||
|
height += leftImagePanel.getBackgroundImage(bottomAnchor).getIconHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
leftImagePanel.setPreferredSize(new Dimension(width, height));
|
||||||
|
leftImagePanel.setMaximumSize(new Dimension(width, height));
|
||||||
|
leftImagePanel.setMinimumSize(new Dimension(width, 0));
|
||||||
|
leftImagePanel.setSize(new Dimension(width, height));
|
||||||
|
|
||||||
|
leftImagePanel.setOpaque(false);
|
||||||
|
// this /////////////////////////////////////////////////////////////////
|
||||||
|
int dy = 0;
|
||||||
|
add(leftImagePanel, new GridBagConstraints(
|
||||||
|
0, 0, // x, y
|
||||||
|
1, 100, // width, height
|
||||||
|
0.0, 1.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.WEST, // anchor
|
||||||
|
GridBagConstraints.VERTICAL, // fill
|
||||||
|
new Insets(0, 0, 0, 0), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
add(textPane, new GridBagConstraints(
|
||||||
|
1, dy++, // x, y
|
||||||
|
4, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.LINE_START, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(10, 11, 11, 11), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
NbiTextPane separatorPane = new NbiTextPane();
|
||||||
|
|
||||||
|
separatorPane = new NbiTextPane();
|
||||||
|
add(separatorPane, new GridBagConstraints(
|
||||||
|
3, dy, // x, y
|
||||||
|
1, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.CENTER, // anchor
|
||||||
|
GridBagConstraints.BOTH, // fill
|
||||||
|
new Insets(0, 0, 0, 0), // padding
|
||||||
|
0, 0)); // padx, pady - ???
|
||||||
|
|
||||||
|
|
||||||
|
// move error label after the left welcome image
|
||||||
|
Component errorLabel = getComponent(0);
|
||||||
|
getLayout().removeLayoutComponent(errorLabel);
|
||||||
|
add(errorLabel, new GridBagConstraints(
|
||||||
|
1, 99, // x, y
|
||||||
|
99, 1, // width, height
|
||||||
|
1.0, 0.0, // weight-x, weight-y
|
||||||
|
GridBagConstraints.CENTER, // anchor
|
||||||
|
GridBagConstraints.HORIZONTAL, // fill
|
||||||
|
new Insets(4, 11, 4, 0), // padding
|
||||||
|
0, 0)); // ??? (padx, pady)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
public static final String DEFAULT_TITLE =
|
||||||
|
ResourceUtils.getString(WelcomePanel.class,
|
||||||
|
"WP.title");
|
||||||
|
public static final String DEFAULT_DESCRIPTION =
|
||||||
|
ResourceUtils.getString(WelcomePanel.class,
|
||||||
|
"WP.description"); // NOI18N
|
||||||
|
public static final String WELCOME_TEXT_PROPERTY =
|
||||||
|
"welcome.text"; // NOI18N
|
||||||
|
public static final String WELCOME_ALREADY_INSTALLED_TEXT_PROPERTY =
|
||||||
|
"welcome.already.installed.text"; // NOI18N
|
||||||
|
public static final String WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT_PROPERTY =
|
||||||
|
"welcome.already.installed.next.button.text";//NOI18N
|
||||||
|
public static final String WELCOME_INCOMPATIBLE_PLATFORM_TEXT =
|
||||||
|
ResourceUtils.getString(WelcomePanel.class,
|
||||||
|
"WP.incompatible.platform.text");//NOI18N
|
||||||
|
|
||||||
|
public static final String DEFAULT_WELCOME_ALREADY_INSTALLED_NEXT_BUTTON_TEXT =
|
||||||
|
ResourceUtils.getString(WelcomePanel.class,
|
||||||
|
"WP.already.installed.next.button.text");//NOI18N
|
||||||
|
|
||||||
|
public static final String DEFAULT_WELCOME_TEXT =
|
||||||
|
ResourceUtils.getString(WelcomePanel.class,
|
||||||
|
"WP.welcome.text"); // NOI18N
|
||||||
|
|
||||||
|
public static final String DEFAULT_WELCOME_ALREADY_INSTALLED_TEXT =
|
||||||
|
ResourceUtils.getString(WelcomePanel.class,
|
||||||
|
"WP.already.installed.text"); // NOI18N
|
||||||
|
|
||||||
|
public static final String WELCOME_PAGE_LEFT_TOP_IMAGE_PROPERTY =
|
||||||
|
"nbi.wizard.ui.swing.welcome.left.top.image";//NOI18N
|
||||||
|
public static final String WELCOME_PAGE_LEFT_BOTTOM_IMAGE_PROPERTY =
|
||||||
|
"nbi.wizard.ui.swing.welcome.left.bottom.image";//NOI18N
|
||||||
|
}
|
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 5.0 KiB |
@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
#####################################################################################
|
||||||
|
# MainSequence.java
|
||||||
|
MS.IA.title=Installation
|
||||||
|
MS.IA.description=Please wait while the installer installs {product-name}.
|
@ -0,0 +1,154 @@
|
|||||||
|
/*
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
*
|
||||||
|
* Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
* Other names may be trademarks of their respective owners.
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the terms of either the GNU General
|
||||||
|
* Public License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
* License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
* compliance with the License. You can obtain a copy of the License at
|
||||||
|
* http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
* License for the specific language governing permissions and limitations under the
|
||||||
|
* License. When distributing the software, include this License Header Notice in
|
||||||
|
* each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
* designates this particular file as subject to the "Classpath" exception as
|
||||||
|
* provided by Oracle in the GPL Version 2 section of the License file that
|
||||||
|
* accompanied this code. If applicable, add the following below the License Header,
|
||||||
|
* with the fields enclosed by brackets [] replaced by your own identifying
|
||||||
|
* information: "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
* is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
* GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
* this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
* you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
* distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
* to extend the choice of license to its licensees as provided above. However, if
|
||||||
|
* you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
|
||||||
|
* the option applies only if the new code is made subject to such option by the
|
||||||
|
* copyright holder.
|
||||||
|
*/
|
||||||
|
package org.mycompany.installer.wizard.components.sequences;
|
||||||
|
|
||||||
|
import org.netbeans.installer.wizard.components.sequences.ProductWizardSequence;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import org.mycompany.installer.wizard.components.panels.PostInstallSummaryPanel;
|
||||||
|
import org.mycompany.installer.wizard.components.panels.PreInstallSummaryPanel;
|
||||||
|
import org.netbeans.installer.product.components.Product;
|
||||||
|
import org.netbeans.installer.product.Registry;
|
||||||
|
import org.netbeans.installer.utils.ResourceUtils;
|
||||||
|
import org.netbeans.installer.utils.helper.ExecutionMode;
|
||||||
|
import org.netbeans.installer.wizard.components.WizardSequence;
|
||||||
|
import org.netbeans.installer.wizard.components.actions.DownloadConfigurationLogicAction;
|
||||||
|
import org.netbeans.installer.wizard.components.actions.DownloadInstallationDataAction;
|
||||||
|
import org.netbeans.installer.wizard.components.actions.InstallAction;
|
||||||
|
import org.netbeans.installer.wizard.components.actions.UninstallAction;
|
||||||
|
import org.netbeans.installer.wizard.components.panels.LicensesPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Dmitry Lipin
|
||||||
|
*/
|
||||||
|
public class MainSequence extends WizardSequence {
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Instance
|
||||||
|
|
||||||
|
private DownloadConfigurationLogicAction downloadConfigurationLogicAction;
|
||||||
|
private LicensesPanel licensesPanel;
|
||||||
|
private PreInstallSummaryPanel preInstallSummaryPanel;
|
||||||
|
private UninstallAction uninstallAction;
|
||||||
|
private DownloadInstallationDataAction downloadInstallationDataAction;
|
||||||
|
private InstallAction installAction;
|
||||||
|
private PostInstallSummaryPanel postInstallSummaryPanel;
|
||||||
|
private Map<Product, ProductWizardSequence> productSequences;
|
||||||
|
|
||||||
|
public MainSequence() {
|
||||||
|
downloadConfigurationLogicAction = new DownloadConfigurationLogicAction();
|
||||||
|
licensesPanel = new LicensesPanel();
|
||||||
|
preInstallSummaryPanel = new PreInstallSummaryPanel();
|
||||||
|
uninstallAction = new UninstallAction();
|
||||||
|
downloadInstallationDataAction = new DownloadInstallationDataAction();
|
||||||
|
installAction = new InstallAction();
|
||||||
|
postInstallSummaryPanel = new PostInstallSummaryPanel();
|
||||||
|
productSequences = new HashMap<Product, ProductWizardSequence>();
|
||||||
|
|
||||||
|
installAction.setProperty(InstallAction.TITLE_PROPERTY,
|
||||||
|
DEFAULT_IA_TITLE);
|
||||||
|
installAction.setProperty(InstallAction.DESCRIPTION_PROPERTY,
|
||||||
|
DEFAULT_IA_DESCRIPTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void executeForward() {
|
||||||
|
final Registry registry = Registry.getInstance();
|
||||||
|
final List<Product> toInstall = registry.getProductsToInstall();
|
||||||
|
final List<Product> toUninstall = registry.getProductsToUninstall();
|
||||||
|
|
||||||
|
// remove all current children (if there are any), as the components
|
||||||
|
// selection has probably changed and we need to rebuild from scratch
|
||||||
|
getChildren().clear();
|
||||||
|
|
||||||
|
// the set of wizard components differs greatly depending on the execution
|
||||||
|
// mode - if we're installing, we ask for input, run a wizard sequence for
|
||||||
|
// each selected component and then download and install; if we're creating
|
||||||
|
// a bundle, we only need to download and package things
|
||||||
|
|
||||||
|
if (toInstall.size() > 0) {
|
||||||
|
addChild(downloadConfigurationLogicAction);
|
||||||
|
addChild(licensesPanel);
|
||||||
|
|
||||||
|
for (Product product : toInstall) {
|
||||||
|
if (!productSequences.containsKey(product)) {
|
||||||
|
productSequences.put(
|
||||||
|
product,
|
||||||
|
new ProductWizardSequence(product));
|
||||||
|
}
|
||||||
|
|
||||||
|
addChild(productSequences.get(product));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addChild(preInstallSummaryPanel);
|
||||||
|
|
||||||
|
if (toUninstall.size() > 0) {
|
||||||
|
addChild(uninstallAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toInstall.size() > 0) {
|
||||||
|
addChild(downloadInstallationDataAction);
|
||||||
|
addChild(installAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
addChild(postInstallSummaryPanel);
|
||||||
|
|
||||||
|
super.executeForward();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canExecuteForward() {
|
||||||
|
return ExecutionMode.NORMAL == ExecutionMode.getCurrentExecutionMode() &&
|
||||||
|
(Registry.getInstance().getProductsToInstall().size() > 0 ||
|
||||||
|
Registry.getInstance().getProductsToUninstall().size() > 0);
|
||||||
|
}
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Constants
|
||||||
|
public static final String DEFAULT_IA_TITLE =
|
||||||
|
ResourceUtils.getString(
|
||||||
|
MainSequence.class,
|
||||||
|
"MS.IA.title"); // NOI18N
|
||||||
|
public static final String DEFAULT_IA_DESCRIPTION =
|
||||||
|
ResourceUtils.getString(
|
||||||
|
MainSequence.class,
|
||||||
|
"MS.IA.description"); // NOI18N
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wizard-components.xsd">
|
||||||
|
<component
|
||||||
|
class="org.mycompany.installer.wizard.components.actions.InitializeAction"/>
|
||||||
|
<component
|
||||||
|
class="org.mycompany.installer.wizard.components.panels.WelcomePanel"/>
|
||||||
|
<component
|
||||||
|
class="org.mycompany.installer.wizard.components.sequences.MainSequence"/>
|
||||||
|
<component
|
||||||
|
class="org.netbeans.installer.wizard.components.sequences.CreateBundleSequence"/>
|
||||||
|
<component
|
||||||
|
class="org.netbeans.installer.wizard.components.actions.FinalizeRegistryAction"/>
|
||||||
|
</wizard>
|
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 821 B |
77
sdk/nbi/stub/ext/infra/build/engine/build.properties
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
# path to the directory where the base build scripts library and properties
|
||||||
|
# reside
|
||||||
|
common.dir=../../../../.common
|
||||||
|
|
||||||
|
# path to the local working directory; this directory which will be the target
|
||||||
|
# for checking out the sources and will be used for the build process
|
||||||
|
# * this path can be either absolute or relative in any unix environment,
|
||||||
|
# however, only relative paths are supported on windows, as the cygwin scp
|
||||||
|
# command does not properly handle colon in local paths
|
||||||
|
work.dir=./build
|
||||||
|
|
||||||
|
# path to the local distributive directory; this directory will contain the
|
||||||
|
# distributive file, when (if) the build script finishes successfully
|
||||||
|
dist.dir=./dist
|
||||||
|
|
||||||
|
# path to the engine sources within the cvs module; it should be a relative
|
||||||
|
# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module
|
||||||
|
# name, the path should be 'engine'
|
||||||
|
cvs.path=engine
|
||||||
|
|
||||||
|
# name of the engine's distributive file
|
||||||
|
engine.dist.file.name=nbi-engine.jar
|
||||||
|
|
||||||
|
# we do not need to build anything native for the netbeans-specific engine, as it
|
||||||
|
# does not contain any native components
|
||||||
|
build.native=false
|
||||||
|
|
||||||
|
# custom parameter for the netbeans project build script - in case of the netbeans
|
||||||
|
# nbi engine - the location of the core engine jar file
|
||||||
|
nb.custom.parameter=-Dreference.NBI_Engine.jar=${core.engine.dist.file}
|
||||||
|
|
||||||
|
# sources parameters; a search-and-replace will be run over the sources after
|
||||||
|
# check-out, replacing [token] => [value]; regular expressions are not allowed
|
||||||
|
# * ${sources.params.length} - total number of the parameters
|
||||||
|
# * indices should start with 1
|
||||||
|
# * parameters are not i18n compliant
|
||||||
|
|
||||||
|
sources.params.length=0
|
77
sdk/nbi/stub/ext/infra/build/engine/build.xml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is the build script for the NetBeans IDE nbi engine instance.
|
||||||
|
|
||||||
|
It inherits most of the functionality from the base script for building nbi
|
||||||
|
engine instances, while providing this instance-specific values for several
|
||||||
|
core properties. For more details on the values of these properties see
|
||||||
|
the build.properties file.
|
||||||
|
-->
|
||||||
|
<project name="netbeans-engine" default="usage" basedir=".">
|
||||||
|
<!-- import the properties that are specific to this environment -->
|
||||||
|
<property file="${environment.properties}"/>
|
||||||
|
|
||||||
|
<!-- import the properties that are specific to this engine instance -->
|
||||||
|
<property file="build.properties"/>
|
||||||
|
|
||||||
|
<!-- import the base script for building the engine -->
|
||||||
|
<import file="${common.dir}/engine.xml" optional="false"/>
|
||||||
|
|
||||||
|
<!-- ============================================================================
|
||||||
|
Default
|
||||||
|
============================================================================= -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The default target.
|
||||||
|
|
||||||
|
Does nothing except printing the usage information.
|
||||||
|
-->
|
||||||
|
<target name="usage">
|
||||||
|
<echo>
|
||||||
|
In order to 'clean', 'checkout' and 'build' the engine use the
|
||||||
|
'build-all' target. To 'clean', 'checkout', 'build' and
|
||||||
|
'release' - use 'release-all'.
|
||||||
|
|
||||||
|
For more details, please see the source of this build script.
|
||||||
|
</echo>
|
||||||
|
</target>
|
||||||
|
</project>
|
@ -0,0 +1,159 @@
|
|||||||
|
#
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
#
|
||||||
|
# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
#
|
||||||
|
# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
# Other names may be trademarks of their respective owners.
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
# License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
# License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
# compliance with the License. You can obtain a copy of the License at
|
||||||
|
# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
# License for the specific language governing permissions and limitations under the
|
||||||
|
# License. When distributing the software, include this License Header Notice in
|
||||||
|
# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
# designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
# If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
# by brackets [] replaced by your own identifying information:
|
||||||
|
# "Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
#
|
||||||
|
# The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
# Rights Reserved.
|
||||||
|
#
|
||||||
|
# If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
# this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
# you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
# distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
# to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
# option applies only if the new code is made subject to such option by the copyright
|
||||||
|
# holder.
|
||||||
|
#
|
||||||
|
|
||||||
|
# path to the directory where the base build scripts library and properties
|
||||||
|
# reside
|
||||||
|
common.dir=../../../../../.common
|
||||||
|
|
||||||
|
# path to the local working directory; this directory which will be the target
|
||||||
|
# for checking out the sources and will be used for the build process
|
||||||
|
# * this path can be either absolute or relative in any unix environment,
|
||||||
|
# however, only relative paths are supported on windows, as the cygwin scp
|
||||||
|
# command does not properly handle colon in local paths
|
||||||
|
work.dir=./build
|
||||||
|
|
||||||
|
# path to the local distributive directory; this directory will contain the
|
||||||
|
# distributive file, when (if) the build script finishes successfully
|
||||||
|
dist.dir=./dist
|
||||||
|
|
||||||
|
# path to the products's sources within the cvs module; it should be a relative
|
||||||
|
# path from the module's root, e.g. for 'nbi/engine', where 'nbi is the module
|
||||||
|
# name, the path should be 'engine'
|
||||||
|
cvs.path=components/products/helloworld
|
||||||
|
|
||||||
|
# core product properties:
|
||||||
|
# * ${product.uid} - product "family" (e.g. nb-ide)
|
||||||
|
# * ${product.version} - actual products' version; together with the uid it
|
||||||
|
# forms the unique identifier for the product)
|
||||||
|
# * ${product.platforms} - the list of platforms that are supported by this
|
||||||
|
# product (note that this property is not related to native libraries)
|
||||||
|
product.uid={product-uid}
|
||||||
|
product.version={product-version}
|
||||||
|
product.platforms=generic
|
||||||
|
|
||||||
|
# miscellaneous product properties:
|
||||||
|
# * ${product.status} - default status that the product will have in the
|
||||||
|
# registry. it is meant to be always "not-installed", unless you want
|
||||||
|
# something really exotic
|
||||||
|
# * ${product.offset} - order of the product's node among its parent's
|
||||||
|
# children, the bigger the offset value, the further the product's node will
|
||||||
|
# be
|
||||||
|
# * ${product.expand} - whether to automatically expand the product's node in
|
||||||
|
# the components tree or not; 'true'/'false'
|
||||||
|
# * ${product.visible} - whether the product's node is visible or not (note
|
||||||
|
# that this value will be modified at nbi runtime, 'true' may become 'false'
|
||||||
|
# if the product is filtered out); 'true'/'false'
|
||||||
|
# * ${product.features} - list of features that this porduct belongs to; the
|
||||||
|
# list should be space-separated
|
||||||
|
product.status=not-installed
|
||||||
|
product.offset=20000
|
||||||
|
product.expand=false
|
||||||
|
product.visible=true
|
||||||
|
product.features=
|
||||||
|
|
||||||
|
# list of configuration logic jar files; normally the first one would be the
|
||||||
|
# distributive file of the product's netbeans project
|
||||||
|
# * ${product.logic.length} - total number of the files
|
||||||
|
# * indices should start with 1
|
||||||
|
product.logic.length=1
|
||||||
|
product.logic.1.path=${nbproject.dist.dir}/${nbproject.dist.file.name}
|
||||||
|
|
||||||
|
# list of product installation data files
|
||||||
|
# * ${product.data.length} - total number of the files
|
||||||
|
# * ${product.data.N.uri} - uri at which the installation data file is located
|
||||||
|
# * ${product.data.N.zip} - whether the data file is a zip archive which needs to
|
||||||
|
# be extracted or it is a file that should be used directly; 'true'/'false'
|
||||||
|
# * indices should start with 1
|
||||||
|
product.data.length=1
|
||||||
|
product.data.1.zip=true
|
||||||
|
product.data.1.path={product-data-path}
|
||||||
|
product.data.sub.dir={product-data-sub-dir}
|
||||||
|
|
||||||
|
# modificator for the required disk space parameter; the core value will be the
|
||||||
|
# sum of unzipped unstallation data files
|
||||||
|
# * the measurement unit is one byte
|
||||||
|
product.disk.space.modificator=0
|
||||||
|
|
||||||
|
# product's requirements (i.e. other products that should be installed
|
||||||
|
# in order for this product to succesfully install and function)
|
||||||
|
# * ${product.requirements.length} - total number of the requirements
|
||||||
|
# * indices should start with 1
|
||||||
|
product.requirements.length=0
|
||||||
|
#product.requirements.1.uid=
|
||||||
|
#product.requirements.1.version-lower=
|
||||||
|
#product.requirements.1.version-upper=
|
||||||
|
|
||||||
|
# product's conflicts (i.e. other products that prevent this product from
|
||||||
|
# functioning correctly, and thus cannot be installed together with it)
|
||||||
|
# * ${product.conflicts.length} - total number of the conflicts
|
||||||
|
# * indices should start with 1
|
||||||
|
product.conflicts.length=0
|
||||||
|
#product.conflicts.1.uid=
|
||||||
|
#product.conflicts.1.version-lower=
|
||||||
|
#product.conflicts.1.version-upper=
|
||||||
|
|
||||||
|
# other products that should be installed prior to this product; these
|
||||||
|
# dependencies do not imply that the dependent product will be installed at
|
||||||
|
# all, but if both the current and the dependent product are selected for
|
||||||
|
# installation, the latter will be installed first
|
||||||
|
# * ${product.install-afters.length} - total number of the install-afters
|
||||||
|
# * indices should start with 1
|
||||||
|
product.install-afters.length=0
|
||||||
|
#product.install-afters.1.uid=
|
||||||
|
|
||||||
|
# additional product's properties; these will appear in the product's
|
||||||
|
# descriptor and in the registry in the form of
|
||||||
|
# <property name="[name]">value</property> tags.
|
||||||
|
# * ${product.properties.length} - total number of the properties
|
||||||
|
# * indices should start with 1
|
||||||
|
# * properties are not i18n compliant
|
||||||
|
product.properties.length=3
|
||||||
|
product.properties.1.name=installation.location
|
||||||
|
product.properties.1.value=$N{install}/{product-install-directory-name}
|
||||||
|
product.properties.2.name=installation.location.windows
|
||||||
|
product.properties.2.value=$N{install}/{product-install-directory-name-windows}
|
||||||
|
product.properties.3.name=installation.location.macosx
|
||||||
|
product.properties.3.value=$N{install}/{product-install-directory-name-macosx}.app
|
||||||
|
|
||||||
|
# sources parameters; a search-and-replace will be run over the sources after
|
||||||
|
# check-out, replacing [token] => [value]; regular expressions are not allowed
|
||||||
|
# * ${sources.params.length} - total number of the parameters
|
||||||
|
# * indices should start with 1
|
||||||
|
# * parameters are not i18n compliant
|
||||||
|
sources.params.length=0
|
98
sdk/nbi/stub/ext/infra/build/products/helloworld/build.xml
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||||
|
|
||||||
|
Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
|
||||||
|
Other names may be trademarks of their respective owners.
|
||||||
|
|
||||||
|
The contents of this file are subject to the terms of either the GNU General Public
|
||||||
|
License Version 2 only ("GPL") or the Common Development and Distribution
|
||||||
|
License("CDDL") (collectively, the "License"). You may not use this file except in
|
||||||
|
compliance with the License. You can obtain a copy of the License at
|
||||||
|
http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
|
||||||
|
License for the specific language governing permissions and limitations under the
|
||||||
|
License. When distributing the software, include this License Header Notice in
|
||||||
|
each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle
|
||||||
|
designates this particular file as subject to the "Classpath" exception as provided
|
||||||
|
by Oracle in the GPL Version 2 section of the License file that accompanied this code.
|
||||||
|
If applicable, add the following below the License Header, with the fields enclosed
|
||||||
|
by brackets [] replaced by your own identifying information:
|
||||||
|
"Portions Copyrighted [year] [name of copyright owner]"
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
The Original Software is NetBeans. The Initial Developer of the Original Software
|
||||||
|
is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
|
||||||
|
Rights Reserved.
|
||||||
|
|
||||||
|
If you wish your version of this file to be governed by only the CDDL or only the
|
||||||
|
GPL Version 2, indicate your decision by adding "[Contributor] elects to include
|
||||||
|
this software in this distribution under the [CDDL or GPL Version 2] license." If
|
||||||
|
you do not indicate a single choice of license, a recipient has the option to
|
||||||
|
distribute your version of this file under either the CDDL, the GPL Version 2 or
|
||||||
|
to extend the choice of license to its licensees as provided above. However, if you
|
||||||
|
add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
|
||||||
|
option applies only if the new code is made subject to such option by the copyright
|
||||||
|
holder.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This is the build script for the helloworld product package.
|
||||||
|
|
||||||
|
It inherits most of the functionality from the base script for building nbi
|
||||||
|
product packages, while providing this instance-specific values for several
|
||||||
|
core properties. For more details on the values of these properties see
|
||||||
|
the build.properties file.
|
||||||
|
-->
|
||||||
|
<project name="helloworld-product" default="usage" basedir=".">
|
||||||
|
<!-- import the properties that are specific to this environment -->
|
||||||
|
<property file="${environment.properties}"/>
|
||||||
|
|
||||||
|
<!-- import the properties that are specific to this product package -->
|
||||||
|
<property file="build.properties"/>
|
||||||
|
|
||||||
|
<!-- import the base script for building product packages -->
|
||||||
|
<import file="${common.dir}/product.xml" optional="false"/>
|
||||||
|
|
||||||
|
<target name="-pre-package">
|
||||||
|
<mkdir dir="${data.directory}/__tmpdir__"/>
|
||||||
|
|
||||||
|
<move todir="${data.directory}/__tmpdir__">
|
||||||
|
<fileset dir="${data.directory}/${product.data.sub.dir}">
|
||||||
|
<include name="**"/>
|
||||||
|
</fileset>
|
||||||
|
</move>
|
||||||
|
|
||||||
|
<delete dir="${data.directory}/${product.data.sub.dir}" includeemptydirs="true"/>
|
||||||
|
|
||||||
|
<move todir="${data.directory}">
|
||||||
|
<fileset dir="${data.directory}/__tmpdir__">
|
||||||
|
<include name="**"/>
|
||||||
|
</fileset>
|
||||||
|
</move>
|
||||||
|
<delete dir="${data.directory}/__tmpdir__" includeemptydirs="true"/>
|
||||||
|
<!--
|
||||||
|
<exec executable="sh" failonerror="false" dir="${data.directory}">
|
||||||
|
<arg value="-c"/>
|
||||||
|
<arg value="chmod a+x bin/*.sh"/>
|
||||||
|
</exec>
|
||||||
|
-->
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The default target.
|
||||||
|
|
||||||
|
Does nothing except printing the usage information.
|
||||||
|
-->
|
||||||
|
<target name="usage">
|
||||||
|
<echo>
|
||||||
|
In order to 'clean', 'checkout' and 'build' the group use the
|
||||||
|
'build-all' target. To 'clean', 'checkout', 'build' and
|
||||||
|
'release' - use 'release-all'.
|
||||||
|
|
||||||
|
For more details, please see the source of this build script.
|
||||||
|
</echo>
|
||||||
|
</target>
|
||||||
|
</project>
|
198
sdk/nbi/stub/template.xml
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<project name="build installers" default="build" basedir=".">
|
||||||
|
<!--<property file="${basedir}/template.properties"/>-->
|
||||||
|
|
||||||
|
<target name="build" depends="init,prepare-sources,prepare-zip,-build,post-build,run-build"/>
|
||||||
|
|
||||||
|
<target name="-init-props">
|
||||||
|
<available file="${suite.location}/nbproject/project.properties" property="do.load.ant.props"/>
|
||||||
|
<available file="${suite.location}/pom.xml" property="do.load.maven.props"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-init-ant-props" if="do.load.ant.props" depends="-init-props">
|
||||||
|
<property file="${suite.location}/nbproject/project.properties" prefix="suite.props."/>
|
||||||
|
</target>
|
||||||
|
<target name="-init-maven-props" if="do.load.maven.props" depends="-init-props">
|
||||||
|
<xmlproperty file="${suite.location}/pom.xml" prefix="pom.props"/>
|
||||||
|
<property name="suite.props.app.name" value="${pom.props.project.properties.brandingToken}"/>
|
||||||
|
<property name="suite.props.app.title" value="${pom.props.project.artifactId}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="init" depends="-clean,-init-ant-props,-init-maven-props">
|
||||||
|
<property name="installer.build.dir" value="${suite.location}/build/installer"/>
|
||||||
|
<property name="suite.dist.directory" value="${suite.location}/dist"/>
|
||||||
|
<property name="suite.dist.zip" value="${suite.dist.directory}/${suite.props.app.name}.zip"/>
|
||||||
|
<property name="installers.file.prefix" value="${suite.props.app.name}"/>
|
||||||
|
<delete dir="${installer.build.dir}" includeemptydirs="yes" failonerror="false"/>
|
||||||
|
|
||||||
|
<mkdir dir="${installer.build.dir}"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<target name="-clean">
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="post-build">
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-build">
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="run-build">
|
||||||
|
<ant dir="${installer.build.dir}" inheritAll="false"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-init-zip">
|
||||||
|
<condition property="do.build.zip">
|
||||||
|
<available file="${suite.dist.zip}"/>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target name="-build-zip" depends="-init-zip" unless="do.build.zip">
|
||||||
|
<antcall target="-build-zip-ant"/>
|
||||||
|
<antcall target="-build-zip-maven"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-build-zip-ant" depends="-init-zip" if="do.load.ant.props">
|
||||||
|
<subant buildpath="${suite.location}" inheritAll="false" target="build-zip"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-build-zip-maven" depends="-init-zip" if="do.load.maven.props">
|
||||||
|
<condition property="mvn.executable" value="mvn.bat" else="mvn">
|
||||||
|
<os family="windows"/>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<exec executable="${mvn.executable}" dir="${suite.location}">
|
||||||
|
<arg value="install"/>
|
||||||
|
<env key="JAVA_HOME" value="${java.home}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="prepare-zip" depends="-init-zip,-build-zip"/>
|
||||||
|
|
||||||
|
<target name="prepare-sources">
|
||||||
|
<copy todir="${installer.build.dir}">
|
||||||
|
<fileset dir="${nbi.stub.location}"/>
|
||||||
|
</copy>
|
||||||
|
<copy todir="${installer.build.dir}/.common">
|
||||||
|
<fileset dir="${nbi.stub.common.location}"/>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
<property name="product-uid" value="${suite.nbi.product.uid}"/>
|
||||||
|
<!--normen-->
|
||||||
|
<property name="product-version" value="${suite.nbi.product.uid}"/>
|
||||||
|
|
||||||
|
<condition property="icon.path" value="${nbi.icon.file}" else="${installer.build.dir}/ext/components/products/helloworld/data/icon48.png">
|
||||||
|
<and>
|
||||||
|
<isset property="nbi.icon.file"/>
|
||||||
|
<available file="${nbi.icon.file}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<basename property="icon.file.name" file="${icon.path}"/>
|
||||||
|
<condition property="icon.extension" value=".gif">
|
||||||
|
<or>
|
||||||
|
<matches string="${icon.file.name}" pattern="^.*\.gif$"/>
|
||||||
|
<matches string="${icon.file.name}" pattern="^.*\.gif$"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="icon.extension" value=".png">
|
||||||
|
<or>
|
||||||
|
<matches string="${icon.file.name}" pattern="^.*\.png$"/>
|
||||||
|
<matches string="${icon.file.name}" pattern="^.*\.PNG$"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<property name="icon.name" value="${suite.props.app.name}${icon.extension}"/>
|
||||||
|
|
||||||
|
<copy file="${icon.path}" tofile="${installer.build.dir}/ext/components/products/helloworld/src/org/mycompany/${icon.name}"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<replace file="${installer.build.dir}/build.properties" encoding="utf-8">
|
||||||
|
<replacefilter token="{nbi.ant.tasks.jar}" value="${nbi.ant.tasks.jar}"/>
|
||||||
|
<replacefilter token="{nbi.registries.management.jar}" value="${nbi.registries.management.jar}"/>
|
||||||
|
<replacefilter token="{nbi.engine.jar}" value="${nbi.engine.jar}"/>
|
||||||
|
<replacefilter token="{product-platforms}" value="${generate.installer.for.platforms}"/>
|
||||||
|
<replacefilter token="{generator-jdk-location-forward-slashes}" value="${generator-jdk-location-forward-slashes}"/>
|
||||||
|
<replacefilter token="{generated-installers-location-forward-slashes}" value="${suite.dist.directory}"/>
|
||||||
|
<replacefilter token="{pack200.enabled}" value="${pack200.enabled}"/>
|
||||||
|
<replacefilter token="{generated-installers-prefix}" value="${installers.file.prefix}"/>
|
||||||
|
<replacefilter token="{product-uid}" value="${product-uid}"/>
|
||||||
|
<!--normen-->
|
||||||
|
<replacefilter token="{product-version}" value="${product-version}"/>
|
||||||
|
</replace>
|
||||||
|
|
||||||
|
<replace dir="${installer.build.dir}/ext" encoding="utf-8">
|
||||||
|
<replacefilter token="{product-name}" value="${suite.props.app.title}"/>
|
||||||
|
<replacefilter token="{product-simple-name}" value="${suite.props.app.name}"/>
|
||||||
|
<replacefilter token="{product-description}" value=""/>
|
||||||
|
<replacefilter token="{product-uid}" value="${product-uid}"/>
|
||||||
|
<replacefilter token="{product-icon-name}" value="${icon.name}"/>
|
||||||
|
</replace>
|
||||||
|
|
||||||
|
<replace dir="${installer.build.dir}/ext/infra/build/products" encoding="utf-8">
|
||||||
|
<replacefilter token="{product.platforms}" value="${generate.installer.for.platforms}"/>
|
||||||
|
<replacefilter token="{product-data-path}" value="${suite.dist.zip}"/>
|
||||||
|
<replacefilter token="{product-data-sub-dir}" value="${suite.props.app.name}"/>
|
||||||
|
<replacefilter token="{product-uid}" value="${product-uid}"/>
|
||||||
|
<!--normen-->
|
||||||
|
<replacefilter token="{product-version}" value="${product-version}"/>
|
||||||
|
<replacefilter token="{product-install-directory-name}" value="${suite.props.app.name}"/>
|
||||||
|
<replacefilter token="{product-install-directory-name-windows}" value="${suite.props.app.name}"/>
|
||||||
|
<replacefilter token="{product-install-directory-name-macosx}" value="${suite.props.app.name}"/>
|
||||||
|
</replace>
|
||||||
|
<property name="dir.dir" value="${installer.build.dir}/tmpdirfornac"/>
|
||||||
|
<mkdir dir="${dir.dir}"/>
|
||||||
|
|
||||||
|
<native2ascii encoding="utf-8" src="${installer.build.dir}" dest="${dir.dir}" includes="build.properties ext/**/*.properties"/>
|
||||||
|
|
||||||
|
<copy todir="${installer.build.dir}" overwrite="true" includeEmptyDirs="true">
|
||||||
|
<fileset dir="${dir.dir}"/>
|
||||||
|
</copy>
|
||||||
|
<condition property="license.defined">
|
||||||
|
<and>
|
||||||
|
<isset property="nbi.license.file"/>
|
||||||
|
<available file="${nbi.license.file}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<antcall target="-prepare-license"/>
|
||||||
|
|
||||||
|
<condition property="icon.defined">
|
||||||
|
<and>
|
||||||
|
<isset property="nbi.icon.file"/>
|
||||||
|
<available file="${nbi.icon.file}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<antcall target="-prepare-icon"/>
|
||||||
|
|
||||||
|
<condition property="dock.icon.defined">
|
||||||
|
<and>
|
||||||
|
<isset property="nbi.dock.icon.file"/>
|
||||||
|
<available file="${nbi.dock.icon.file}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<antcall target="-prepare-dock-icon"/>
|
||||||
|
|
||||||
|
<delete dir="${dir.dir}" includeEmptyDirs="true"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-prepare-license" if="license.defined">
|
||||||
|
<copy file="${nbi.license.file}" tofile="${installer.build.dir}/ext/components/products/helloworld/src/org/mycompany/license.txt" overwrite="true"/>
|
||||||
|
</target>
|
||||||
|
<target name="-prepare-icon" if="icon.defined">
|
||||||
|
<copy file="${nbi.icon.file}" tofile="${installer.build.dir}/ext/engine/src/org/mycompany/installer/wizard/wizard-icon.png" overwrite="true"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="-prepare-dock-icon" if="dock.icon.defined">
|
||||||
|
<mkdir dir="${installer.build.dir}/ext/engine/src/org/netbeans/installer/utils/system/launchers/impl"/>
|
||||||
|
<copy file="${nbi.dock.icon.file}" tofile="${installer.build.dir}/ext/engine/src/org/netbeans/installer/utils/system/launchers/impl/dockicon.icns"/>
|
||||||
|
<copy file="${nbi.dock.icon.file}" tofile="${installer.build.dir}/ext/components/products/helloworld/src/org/mycompany/${suite.props.app.name}.icns"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="replace">
|
||||||
|
<property file="${token.file}"/>
|
||||||
|
<replaceregexp file="${file.to.replace}" flags="mg">
|
||||||
|
<regexp pattern="${regexp.token}"/>
|
||||||
|
<substitution expression="${regexp.replacement}"/>
|
||||||
|
</replaceregexp>
|
||||||
|
</target>
|
||||||
|
</project>
|
16
sdk/nbi/stub/tmpl.properties
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
suite.location=C:/Documents and Settings/Lipin/My Documents/NetBeansProjects/MyApp
|
||||||
|
|
||||||
|
nbi.cluster.location=D:/space/NB-IDE/proto/nbbuild/netbeans/extra
|
||||||
|
|
||||||
|
nbi.stub.location=${nbi.cluster.location}/nbi/stub
|
||||||
|
nbi.stub.common.location=${nbi.cluster.location}/nbi/.common
|
||||||
|
nbi.ant.tasks.jar=${nbi.cluster.location}/modules/ext/nbi-ant-tasks.jar
|
||||||
|
nbi.registries.management.jar=${nbi.cluster.location}/modules/ext/nbi-registries-management.jar
|
||||||
|
nbi.engine.jar=${nbi.cluster.location}/modules/ext/nbi-engine.jar
|
||||||
|
|
||||||
|
generate.installer.for.platforms=windows linux macosx
|
||||||
|
|
||||||
|
generator-jdk-location-forward-slashes=C:/Program Files/Java/jdk1.5.0_16
|
||||||
|
pack200.enabled=false
|
||||||
|
|
||||||
|
suite.nbi.product.uid=myapp
|