> From: sebb [mailto:[EMAIL PROTECTED] > Sent: Wednesday, January 16, 2008 1:07 PM > To: Jakarta Commons Developers List > Subject: Re: [VOTE] Release Commons IO 1.4 based on RC2 > > On 16/01/2008, Niall Pemberton <[EMAIL PROTECTED]> wrote: > > On Jan 16, 2008 6:04 PM, Gary Gregory <[EMAIL PROTECTED]> > wrote: > > > > From: sebb [mailto:[EMAIL PROTECTED] > > > > Sent: Wednesday, January 16, 2008 8:21 AM > > > > To: Jakarta Commons Developers List > > > > Subject: Re: [VOTE] Release Commons IO 1.4 based on RC2 > > > > > > > > On 16/01/2008, Niall Pemberton <[EMAIL PROTECTED]> wrote: > > > > > On Jan 16, 2008 3:58 PM, sebb <[EMAIL PROTECTED]> wrote: > > > > > > The manifest created by the M2 build includes the following: > > > > > > > > > > > > Build-Jdk: 1.5.0_07 > > > > > > X-Compile-Source-JDK: 1.3 > > > > > > X-Compile-Target-JDK: 1.3 > > > > > > > > > > > > so yes, the actual build JDK is shown, but so are the intended > > > > > > versions. > > > > > > > > > > > > For javac, the source and target setting have limited effect in that > > > > > > they don't affect the libraries, see: > > > > > > > > > > > > https://issues.apache.org/jira/browse/MATH- > > > > 173?focusedCommentId=12557925#action_12557925 > > > > > > > > > > Just a note on the above - I have built IO 1.4 using Ant and JDK 1.3 > > > > > (the ant build excludes the JDK 1.4 dependant classes when JDK 1.3 is > > > > > used) and that guarantees that except for the 4 JDK 1.4 > > > > > implementations the rest if the code base only uses JDK 1.3 APIs. Feel > > > > > free to try this out yourselves. > > > > > > > > > > > > > Builds OK for me on 1.3.1_20 so APIs are presumably OK. > > > > > > > > However JDK1.4 is required for testing, so one has to assume that the > > > > 1.3 code tests still work ... for a release which is still targetted > > > > at 1.3 it would be nice if at least one of the build methods allowed > > > > this to be demonstrated. > > > > > > I agree. The Ant build has the same problem. You can build but not test on > 1.3.1. IMO, if you cannot run tests on Java x.y , you cannot say you run on > Java > x.y, strictly speaking. It seems that we "know" we can run but without unit > tests... we are effectively releasing untested code in that context. > > > > > > This is why I have voiced (mildly) opposition to support mixed SDK > > > released > for IO 1.4. To me it is much simpler to do and explain that, for example: IO > 1.3.2 > runs on Java 1.3.1 and IO 1.4 runs on Java 1.4.2. Or keep the Java 1.3.1 > requirement for IO 1.4 and move it to Java 1.4.2 for IO 1.5. > > > > We made this decision months ago and the majority opinion was to move > > to Java 1.4 for IO 1.4. Stephen though wanted to retain compatibility > > for the existing code base - even though he was in a minority, we > > respected his opinion and took this compromise. I have provided a > > mechanism to ensure that JDK 1.4 features have not leaked into the > > existing code base - on top of that anyone who wants to can build > > themselves a JDK 1.3 version - I think this is enough. Theres also > > nothing to stop anyone hacking the ant build to get the tests working > > for 1.3 to satisfy themselves about this release. > > Just tried creating an Ant test target for 1.3, and AFAICS it's not > actually possible to get it working without also making changes to the > 4 PackageTest files that refer to the new classes. > > I can provide a patch for build.xml to exclude the 1.4-only test cases > if required. > > But I'm not sure how the PackageTest errors should be fixed: > - separate PackageTest for the new classes? > - dynamic generation of the test cases (e.g. Class.forName())
I initially fixed the build.xml (see attached patch) but then ran into the trouble of the unit test code not being factored for Java 1.3 vs. 1.4. I think that either: - You can rename all Java 1.4 test to *Java14TestCase. - Create a test suite that includes Java 1.4 test cases. You can then use Ant exclude/include for 1.3 and 1.4 test targets. Gary > > > But IMO these points > > should have been raised when we were making that decision and not now > > at this late stage. > > Perhaps these issues were overlooked at the time. > > > Niall > > > > > Gary > > > > > > > > > > > > > > > Niall > > > > > > > > > > > but at least they have *some* effect. > > > > > > > > > > > > Are you saying that Maven2 fails to act on the source and target JDK > > > > > > settings at all? > > > > > > > > > > > > > > > > > > On 16/01/2008, Paul Benedict <[EMAIL PROTECTED]> wrote: > > > > > > > Only Ant can specify the actual target JDK used to compile the > > > > > > > code in > the > > > > > > > Manifest. Maven has an open issue for this in the jar plugin. > > > > > > > Alot of > people > > > > > > > want to write the target JDK to the manifest, but unfortunately > > > > > > > the > actual > > > > > > > JDK version (e.g., 1.6) appears. > > > > > > > > > > > > > > Paul > > > > > > > > > > > > > > On Jan 16, 2008 8:58 AM, Niall Pemberton > <[EMAIL PROTECTED]> > > > > wrote: > > > > > > > > > > > > > > > On Jan 16, 2008 2:27 PM, sebb <[EMAIL PROTECTED]> wrote: > > > > > > > > > Found what appear to be some build problems: > > > > > > > > > > > > > > > > > > "ant dist" creates a Manifest entry of: > > > > > > > > > > > > > > > > > > X-Compile-Target-JDK: 1.1 > > > > > > > > > > > > > > > > > > whereas the (M2) distribution has: > > > > > > > > > > > > > > > > > > X-Compile-Target-JDK: 1.3 > > > > > > > > > > > > > > > > > > This is probably due to > > > > > > > > > > > > > > > > > > project.properties: maven.compile.target = 1.1 > > > > > > > > > > > > > > > > > > which affects M1 builds as well. > > > > > > > > > > > > > > > > OK but m2 is the primary build system for this release as long > > > > > > > > as > what > > > > > > > > its generated is OK and the other builds work (even though with > > > > > > > > slightly different config) then I don't think this is an issue. > > > > > > > > This > > > > > > > > release supports mainly JDK 1.3 with some JDK 1.4 requirement - > and by > > > > > > > > configuring source/target compiler options of 1.3 then we > > > > > > > > achieve > that > > > > > > > > (which is also the same as the last release btw) - the other > > > > > > > > build > > > > > > > > systems specifying 1.1 doesn't AFAIK break that goal. > > > > > > > > > > > > > > > > > The Ant Manifest does not include the Bundle and Import/Export > > > > > > > > > headers, but that probably does not matter. > > > > > > > > > > > > > > > > Agreed, and my answers the same as to the previous point. > > > > > > > > > > > > > > > > > The Maven1 build runs the tests twice - the target > > > > > > > > > "test:compile" > > > > > > > > > appears twice in the output (but the second time, the classes > > > > > > > > > are > not > > > > > > > > > recompiled). > > > > > > > > > > > > > > > > Yes thats a maven feature! > > > > > > > > > > > > > > > > > The Maven2 build seems to download lots of unnecessary jars, > > > > > > > > > for > > > > > > > > > example, taking just the commons jars: > > > > > > > > > > > > > > > > > > commons-collections-3.0.jar > > > > > > > > > commons-httpclient-3.0.1.jar > > > > > > > > > commons-codec-1.2.jar > > > > > > > > > commons-beanutils-core-1.7.0.jar > > > > > > > > > commons-logging-1.0.3.jar > > > > > > > > > > > > > > > > > > Are these (and all the other jars) really needed to build > > > > > > > > > Commons > IO? > > > > > > > > > I counted 52 jar downloads; there were probably others that > > > > > > > > > would > have > > > > > > > > > been downloaded if I had started with an empty local > > > > > > > > > repository. > > > > > > > > > > > > > > > > Its not what IO needs - its what maven and all the plugins need > > > > > > > > to > run > > > > > > > > the build. Take for example the Jira report that the IO build > produces > > > > > > > > - maven needs it and all its dependencies (and its dependencies' > > > > > > > > dependencies etc etc) to be able to run that report > > > > > > > > http://tinyurl.com/2hgs8c - from a quick scan I count 10 for > > > > > > > > that > > > > > > > > alone and that applies to all the plugins the build uses. IO > > > > > > > > itself > > > > > > > > has one dependency for testing on JUnit and thats it - no > > > > > > > > runtime > > > > > > > > dependencies. > > > > > > > > > > > > > > > > > [ERROR] BUILD ERROR > > > > > > > > > [INFO] > > > > > > > > ------------------------------------------------------------------------ > > > > > > > > > [INFO] Internal error in the plugin manager executing goal > > > > > > > > > 'org.apache.maven.plugins:maven-site-plugin:2.0-beta-5:site': > Unable > > > > > > > > > to find the mojo > > > > > > > > > 'org.apache.maven.plugins:maven-site-plugin:2.0-beta-5:site' > > > > > > > > > in > the > > > > > > > > > plugin 'org.apache.maven.plugins:maven-site-plugin' > > > > > > > > > Component descriptor cannot be found in the component > repository: > > > > > > > > > > > > > > > > > org.apache.maven.plugin.Mojoorg.apache.maven.plugins:maven- > site- > > > > plugin:2.0-beta-5:site > > > > > > > > . > > > > > > > > > > > > > > > > OK I see the version of that plugin in the repo: > > > > > > > > > http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-site- > > > > plugin/ > > > > > > > > > > > > > > > > So looks like its a local problem to your env. (assuming you can > > > > > > > > access the repo). We don't specify a version for that plugin > > > > > > > > either in > > > > > > > > the IO pom.xml or commons-parent (perhaps should) and I've never > had > > > > > > > > any luck downloading and installing them manually, so I usually > > > > > > > > just > > > > > > > > add a dependency temporarily (i.e. specify the plugin and > > > > > > > > version) > and > > > > > > > > let maven sort it out - perhaps someone else can give you a > > > > > > > > better > > > > > > > > solution though. > > > > > > > > > > > > > > > > Niall > > > > > > > > > > > > > > > > > This was running: > > > > > > > > > > > > > > > > > > mvn clean site assembly:assembly > > > > > > > > > > > > > > > > > > using: > > > > > > > > > > > > > > > > > > Maven version: 2.0.8 > > > > > > > > > Java version: 1.4.2_16 > > > > > > > > > OS name: "windows xp" version: "5.1" arch: "x86" Family: > > > > > > > > > "windows" > > > > > > > > > > > > > > > > > > > > > > > > > > > On 16/01/2008, Niall Pemberton <[EMAIL PROTECTED]> > wrote: > > > > > > > > > > Sorry in the changes section that should have read "Fix an > > > > > > > > > > error > in > > > > > > > > > > the FileWriterWithEncoding JavaDocs" rather than just "fix > > > > > > > > > > an > error in > > > > > > > > > > the". > > > > > > > > > > > > > > > > > > > > Niall > > > > > > > > > > > > > > > > > > > > On Jan 16, 2008 10:51 AM, Niall Pemberton > > > > <[EMAIL PROTECTED]> > > > > > > > > wrote: > > > > > > > > > > > There have been a few changes since RC1, but since they > > > > > > > > > > > were > all > > > > IMO > > > > > > > > > > > minor, I've cut a RC2 and thought would proceed straight > > > > > > > > > > > to a > vote. > > > > > > > > > > > > > > > > > > > > > > The changes since RC1 are: > > > > > > > > > > > > > > > > > > > > > > - changes to build.xml to keep gump happy > > > > > > > > > > > - fix an error in the > > > > > > > > > > > - upgrade to version 7 and commons-parent (and remove > > > > > > > > > > > stuff > from > > > > > > > > pom > > > > > > > > > > > thats now in the parent) > > > > > > > > > > > > > > > > > > > > > > The artifacts are here: > > > > > > > > > > > http://people.apache.org/~niallp/io-1.4- > > > > RC2/<http://people.apache.org/%7Eniallp/io-1.4-RC2/> > > > > > > > > > > > > > > > > > > > > > > SVN Tag: > > > > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/commons/proper/io/tags/commons- > io-1.4- > > > > RC2/ > > > > > > > > > > > > > > > > > > > > > > Site: > > > > > > > > > > > http://people.apache.org/~niallp/io-1.4- > > > > RC2/site/<http://people.apache.org/%7Eniallp/io-1.4-RC2/site/> > > > > > > > > > > > (note m2 generates relative links, so some don't work - > > > > > > > > > > > but the > site > > > > > > > > > > > is for info and not included in the release artifacts) > > > > > > > > > > > > > > > > > > > > > > Release Notes: > > > > > > > > > > > http://people.apache.org/~niallp/io-1.4- > > > > RC2/site/upgradeto1_4.html<http://people.apache.org/%7Eniallp/io-1.4- > > > > RC2/site/upgradeto1_4.html> > > > > > > > > > > > (These are a copy of RELEASE-NOTES.txt in html form) > > > > > > > > > > > > > > > > > > > > > > RAT Report: > > > > > > > > > > > http://people.apache.org/~niallp/io-1.4-RC2/site/rat- > > > > report.html<http://people.apache.org/%7Eniallp/io-1.4-RC2/site/rat- > > > > report.html> > > > > > > > > > > > > > > > > > > > > > > CLIRR Report: > > > > > > > > > > > http://people.apache.org/~niallp/io-1.4-RC2/site/clirr- > > > > report.html<http://people.apache.org/%7Eniallp/io-1.4-RC2/site/clirr- > > > > report.html> > > > > > > > > > > > > > > > > > > > > > > RC2 has been built with m2 - but m1 and ant builds are > available - > > > > > > > > details here: > > > > > > > > > > > http://people.apache.org/~niallp/io-1.4- > > > > RC2/site/building.html<http://people.apache.org/%7Eniallp/io-1.4- > > > > RC2/site/building.html> > > > > > > > > > > > > > > > > > > > > > > Vote is open for 72 hours > > > > > > > > > > > > > > > > > > > > > > Thanks in advance for your feedback/votes. > > > > > > > > > > > > > > > > > > > > > > Niall > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------------- > ------ > > > > ------------------> > > > > > > > > > > > > > > > > > > > > > > [ ] +1 I support this release > > > > > > > > > > > [ ] +0 I am OK with this release > > > > > > > > > > > [ ] -0 OK, but.... > > > > > > > > > > > [ ] -1 I do not support this release > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > > > > > For additional commands, e-mail: dev- > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED]
Index: C:/Documents and Settings/ggregory/My Documents/eclipse/workspaces/Apache Commons IO/build.xml =================================================================== --- C:/Documents and Settings/ggregory/My Documents/eclipse/workspaces/Apache Commons IO/build.xml (revision 612191) +++ C:/Documents and Settings/ggregory/My Documents/eclipse/workspaces/Apache Commons IO/build.xml (working copy) @@ -203,19 +203,56 @@ <!-- ========== Unit Test Targets ========================================= --> + <target name="compile.tests" depends="compile, download-dependencies" description="Compile unit test cases dependant on JDK version"> + <antcall target="compile.tests.jdk13" /> + <antcall target="compile.tests.all" /> + </target> + + <!-- Compile all classes --> + <target name="compile.tests.all" unless="is.jdk13" + description="Compile ALL test classes"> + <echo message="*** Compiling all test classes ***" /> - <target name="compile.tests" depends="compile,download-dependencies" - description="Compile unit test cases"> - <javac srcdir="${test.home}" - destdir="${build.home}/test-classes" + <!-- check JDK 1.3 --> + <fail message="switch to JDK 1.4+"> + <condition> + <equals arg1="${ant.java.version}" arg2="1.3" /> + </condition> + </fail> + + <javac srcdir="${test.home}" + destdir="${build.home}/test-classes" debug="${compile.debug}" - deprecation="${compile.deprecation}" - optimize="${compile.optimize}"> - <classpath refid="test.classpath"/> - </javac> - </target> + deprecation="${compile.deprecation}" + optimize="${compile.optimize}"> + <classpath refid="test.classpath"/> + </javac> + </target> + <!-- Compile excluding JDK 1.4 classes --> + <target name="compile.tests.jdk13" unless="not.jdk13" + description="Compile ONLY JDK 1.3 compatible test classes "> + <echo message="*** Compiling ONLY JDK 1.3 compatible test classes ***" /> + <fail message="switch to JDK 1.3"> + <condition> + <not><equals arg1="${ant.java.version}" arg2="1.3" /></not> + </condition> + </fail> + <javac srcdir="${test.home}" + destdir="${build.home}/test-classes" + debug="${compile.debug}" + deprecation="${compile.deprecation}" + optimize="${compile.optimize}"> + <classpath refid="test.classpath"/> + <include name="**/*.java"/> + <exclude name="**/FileFilterTestCase.java"/> + <exclude name="**/FileWriterWithEncodingTest.java"/> + <exclude name="**/IOExceptionWithCauseTestCase.java"/> + <exclude name="**/CharSequenceReaderTest.java"/> + </javac> + </target> + <target name="test" depends="compile.tests,test.main,test.comparator,test.filefilter,test.input,test.output" description="Run all unit test cases"> </target>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]