default value for configurable bootclasspath in javac

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

default value for configurable bootclasspath in javac

basinilya
Hi. I've got the following in my build xml:

        <property name="javac.bootclasspath" value="" />

        <presetdef name="myjavac">
                <javac source="1.7" target="1.7" includeantruntime="no" bootclasspath="${javac.bootclasspath}" >
                </javac>
        </presetdef>

The idea is to not alter bootclasspath when the caller did not provide an explicit -Djavac.bootclasspath=...
An empty string as the default value works fine with Sun Javac, but it fails with: <javac compiler="org.eclipse.jdt.core.JDTCompilerAdapter">

     [myjavac] The type java.lang.Double cannot be resolved. It is indirectly referenced from required .class files
     [myjavac] ----------
     [myjavac] 1 problem (1 error)

Since the presetdef task does not support conditional attributes I'm asking for an advice on how to make it work.

This is Ant 1.10.8 bundled with Eclipse.

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: default value for configurable bootclasspath in javac

basinilya
I managed to solve the problem with a script:

  <property name="javac.bootclasspath" value=""/>
  <presetdef name="myjavac">
  <javac source="1.7" target="1.7" includeantruntime="no">
  </javac>
  </presetdef>
  <script id="myjavac_optional_attrs" language="javascript">
  var bootclasspath = project.getProperty("javac.bootclasspath");
  /* bootclasspath="" fails with Eclipse Compiler */
  if (bootclasspath) {
  var myjavacPreSetsWrapper = org.apache.tools.ant.ComponentHelper.getComponentHelper(project).getAntTypeTable().get("myjavac").getPreSets().getWrapper();
  myjavacPreSetsWrapper.setAttribute("bootclasspath", bootclasspath);
  }
  </script>


On 14.04.2021 22:03, [hidden email] wrote:

> Hi. I've got the following in my build xml:
>
> <property name="javac.bootclasspath" value="" />
>
> <presetdef name="myjavac">
> <javac source="1.7" target="1.7" includeantruntime="no" bootclasspath="${javac.bootclasspath}" >
> </javac>
> </presetdef>
>
> The idea is to not alter bootclasspath when the caller did not provide an explicit -Djavac.bootclasspath=...
> An empty string as the default value works fine with Sun Javac, but it fails with: <javac compiler="org.eclipse.jdt.core.JDTCompilerAdapter">
>
>      [myjavac] The type java.lang.Double cannot be resolved. It is indirectly referenced from required .class files
>      [myjavac] ----------
>      [myjavac] 1 problem (1 error)
>
> Since the presetdef task does not support conditional attributes I'm asking for an advice on how to make it work.
>
> This is Ant 1.10.8 bundled with Eclipse.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]