Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-dev] Expanding 'standards' for build files.

Edwin,

That is exactly what I meant by "forces an assumption of the directory". I'll illustrate what I'm talking about below:

The scenarios below assume the use of ${user.home}/build.properties and/or ${user.home}/test.properties for variable redefinition (as is currently the standard).

If I check for say ${external.depend.dir}/${junit.lib} as you suggest, the junit jar will ONLY be found in ${external.depend.dir}, so if you want to use JUnit in say "C:\__mydeps\junit45" with a jarname of "junit-4.5.jar" where the default name is "junit.jar", you'd not only have to redefine ${junit.lib} to be "junit-4.5.jar", but you'd also have to set ${external.depend.dir} to be "C:\__mydeps\junit45", which would also force all other dependencies that use that dir to be searched for in that location as well.

By using the three variable standards I suggested (.jar, .lib, and .dir) I can do what I want easily and with one line:
junit.lib=C:\__mydeps\junit45\junit-4.5.jar
${external.depend.dir} is unaffected (so the rest of my dependencies can come from the default location, or I could set it to:
external.depend.dir=C:\__mydeps
and the rest of my dependencies would come from there independent of the lib definition. It is true, that ${junit.jar} would be set to the default of "junit.jar" but I don't care because the paths and the dependency checks will use ${<name>.lib} as will all log and error messages.

At any rate, I don't want to belabor the point, and you have already stated you have no real preference. Therefore, for the ease of use and flexibility described above I continue to put forward my original proposal.

Are there any other questions, or suggestions from the community?

-Eric


Edwin Tang wrote:
You can check for the existence of <name>.dir/<name.lib>. <name>.dir can ony specify one location, but <name>.lib in your proposal can only point to one library too.

-Edwin

-----Original Message-----
From: Eric Gwin Sent: Friday, November 27, 2009 12:39 PM
To: Dev mailing list for Eclipse Persistence Services
Subject: Re: [eclipselink-dev] Expanding 'standards' for build files.


No it doesn't, because you cannot check for the existence of a jarname only. It is associated with a path (if nothing else "."), Therefore the check for the file forces an assumption of the directory which is inherently limiting. Also your scenario removes the possibility of storing one dependency in a separate location (say for one-off testing of a dependency change).

-Eric
Edwin Tang wrote:
The example code using the other option is like:

common.plugin.dir=./plugins
external.depends.dir=../external.lib
junit.lib=junit-4.5.jar
junit.dir=${external.depends.dir}


after testing for existence of junit.lib and others...
<path pathref="external.compile.deps.path">
    <pathelement ="${junit.dir}/${junit.lib}/>
    <pathelement="${jdbc.dir}/${jdbc.lib}"/>
    ...
</path>

It looks like there are no differences but personal preferences. Either option is fine for me.

Thanks,
Edwin

-----Original Message-----
From: Eric Gwin Sent: Friday, November 27, 2009 10:46 AM
To: Dev mailing list for Eclipse Persistence Services
Subject: Re: [eclipselink-dev] Expanding 'standards' for build files.


So if you want to say use "junit.jar" as the filename, you only need to redefine ${junit.jar}, if you want a different directory to hold all your dependencies you only need to redefine ${external.depends.dir}, and if you want to do both and use a custom named xdb-11-rel2.jar, in a completely seperate location with the previous setup you could simply add a redefinition of ${xdb.lib}.

-Eric

Eric Gwin wrote:
It doesn't. It's more like: (values are just for example...):

common.plugin.dir=./plugins
external.depends.dir=../external.lib
junit.jar=junit-4.5.jar
junit.lib=${external.depends.dir}/${junit.jar}


after testing for existence of junit.lib and others...
<path pathref="external.compile.deps.path">
    <pathelement ="${junit.lib}/>
    <pathelement="${jdbc.lib}"/>
    ...
</path>

That minimal redefinitions need to be made for jar names or dirs if they are customized, and jars can be grouped together, or in different dirs, as required by the developer/user. However, the defined location can still be tested for (verify it is found), before it is added to a classpath (which in many cases will cause errors if it doesn't exist).

-Eric

Edwin Tang wrote:
Hi Gordon,

If the proposal includes a plan to introduce <name>.dir for every single jar file, then there are no substantial differences between these 2 options.

Thanks,
Edwin

-----Original Message-----
From: Gordon Yorke Sent: Friday, November 27, 2009 9:34 AM
To: Dev mailing list for Eclipse Persistence Services
Subject: Re: [eclipselink-dev] Expanding 'standards' for build files.


I prefer Eric's proposal for <name>.jar, <name>.lib and <name>.dir
--Gordon

Edwin Tang wrote:
Hi Eric,

This is great initiative.

Probably, instead of <name>.jar, <name>.lib and <name>.path, it could better that we have
<name>.dir: the location of a jar file
<name>.lib: a jar file name
<name>.path: a path element defined by <pathelement path="${<name>.dir}/${<name>.lib}"/>

The benifits of this option are:
1. Users have full flexibility to able to customize <name>.dir, <name>.lib, or both for every single jar file 2. Avoid the difficulty to choose a sound property name - <name>.jar or <name>.jarfile
3. Be consistent with the TopLink test/build naming conventions

Thanks,
Edwin

-----Original Message-----
From: Eric Gwin Sent: Thursday, November 26, 2009 8:06 AM
To: Dev mailing list for Eclipse Persistence Services
Subject: [eclipselink-dev] Expanding 'standards' for build files.


Hi,

I'm sending this out as a notification/proposal of some additional standard conventions I plan on adding to our build files after the branch.
     - properties ending in .jar define jarfile names only (no path)
- properties ending in .lib are fully qualified jars (path and filename)
     - properties ending in .dir are directory paths
- properties ending in .path are path refid names (classpath fragments) - targets beginning with test- are reserved for high level test targets,
       and are used in test results parsing
- targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)

Some are clarifications of standards already in place, but not well publicized. However, with regard to .jar/.lib and .dir/.path there is no current standard, and properties are named and used in a fairly random mostly interchangeable way. There are many reasons this is becoming an issue now, but here are the biggest: - bugs requesting the use of minimal classpaths necessitate the need to individually define libraries. However, the build has multiple entry points so paths to those libraries are relative to the entry point. So the need to separate path from jar name. - adding individual libraries (rather than eclipselink.core.depend or eclipslink.oracle.depend which list them all) also creates a need to separately define directories and classpath subsets.

For the most part I've tried to keep the usage most prevalent for each postfix -.lib was mostly used to define full paths to jars, while .jar mostly defined jar names. However, there are also a few non-conformant properties (eclipselink.jar.name and .jarfile) -.dir really hasn't changed at all, but there were a few uses where it was a defining a pathref
 -.path is pretty much new old pathrefs were either .dir or .classpath

While I needed to implement these changes for the oracle modules for critical fixes in 2.0.0, I plan on implementing these changes across the board after the branch and discussion has occurred.

Does anyone object to these standards, or have preferences other than what I plan to implement? I can see .jarfile being used as the standard postfix because the property can't easily be confused with a static usage of a jar, but it wasn't routinely used.

Comments? (If I hear nothing from you I will assume it is assent, and continue as outlined after the branch is complete.)

-Eric
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev

_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev

_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev

_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev



Back to the top