Tuesday, January 11, 2011

Maven: I still just don't get it.

I'm in the process of trying to kick off another hobby coding project, this time in the Android ecosystem (toxic as that seems to be - more on that in another post someday). Remembering how a few current and former colleagues have raved about Maven, especially how one particular former colleague told me I needed to "suck it up and learn Maven", I decided to give it another shot.

Grabbing a very small and straightforward sample pom.xml from a how-to online, I modified it slightly to correct the project name, and decided to see what would happen if I ran it with no source - just the pom.xml in an empty directory. I ran mvn clean and wasn't totally surprised that it took FOUR MINUTES to do, essentially, nothing. The insane amount of output is below. <hyperbole>I suppose the good news is that now I've reached the end of the internet and have access to all software, everywhere...</hyperbole>

xenolinguist@XenoMac$ mvn clean
[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/com/jayway/maven/plugins/android/generation2/maven-android-plugin/2.8.3/maven-android-plugin-2.8.3.pom

Downloading: http://repo1.maven.org/maven2/com/jayway/maven/plugins/android/generation2/maven-android-plugin/2.8.3/maven-android-plugin-2.8.3.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom

Downloading: http://repo1.maven.org/maven2/org/apache/apache/5/apache-5.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom

Downloading: http://repo1.maven.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom

Downloading: http://repo1.maven.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom

Downloading: http://repo1.maven.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-file/1.0-beta-6/wagon-file-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-providers/1.0-beta-6/wagon-providers-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/1.0-beta-6/wagon-http-lightweight-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-http-shared/1.0-beta-6/wagon-http-shared-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.9.6.2.pom

Downloading: http://repo1.maven.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-http/1.0-beta-6/wagon-http-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-webdav-jackrabbit/1.0-beta-6/wagon-webdav-jackrabbit-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/jackrabbit/jackrabbit-webdav/1.5.0/jackrabbit-webdav-1.5.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/jackrabbit/jackrabbit-parent/1.5.0/jackrabbit-parent-1.5.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/apache/4/apache-4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/jackrabbit/jackrabbit-jcr-commons/1.5.0/jackrabbit-jcr-commons-1.5.0.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.5.3/slf4j-api-1.5.3.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-parent/1.5.3/slf4j-parent-1.5.3.pom

Downloading: http://repo1.maven.org/maven2/commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.pom

Downloading: http://repo1.maven.org/maven2/commons-codec/commons-codec/1.2/commons-codec-1.2.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-nop/1.5.3/slf4j-nop-1.5.3.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom

Downloading: http://repo1.maven.org/maven2/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting/2.2.1/maven-reporting-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia/1.1/doxia-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-ssh-external/1.0-beta-6/wagon-ssh-external-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-ssh-common/1.0-beta-6/wagon-ssh-common-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interactivity/1.0-alpha-6/plexus-interactivity-1.0-alpha-6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.9/plexus-components-1.1.9.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.4/plexus-utils-1.4.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-ssh/1.0-beta-6/wagon-ssh-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/com/jcraft/jsch/0.1.38/jsch-0.1.38.pom

Downloading: http://repo1.maven.org/maven2/classworlds/classworlds/1.1/classworlds-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom

Downloading: http://repo1.maven.org/maven2/org/sonatype/spice/spice-parent/12/spice-parent-12.pom

Downloading: http://repo1.maven.org/maven2/org/sonatype/forge/forge-parent/4/forge-parent-4.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom

Downloading: http://repo1.maven.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.1/maven-dependency-plugin-2.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-plugins/12/maven-plugins-12.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/9/maven-parent-9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0.9/maven-2.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/8/maven-parent-8.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/file-management/1.1/file-management-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-components/4/maven-shared-components-4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/4/maven-parent-4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/apache/3/apache-3.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0/maven-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-io/1.0/maven-shared-io-1.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0.2/maven-2.0.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/1.0.5/plexus-1.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-dependency-analyzer/1.1/maven-dependency-analyzer-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom

Downloading: http://repo1.maven.org/maven2/asm/asm/3.0/asm-3.0.pom

Downloading: http://repo1.maven.org/maven2/asm/asm-parent/3.0/asm-parent-3.0.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0.5/maven-2.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/5/maven-parent-5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0.8/maven-2.0.8.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/6/maven-parent-6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/7/maven-parent-7.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-components/7/maven-shared-components-7.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-project/2.0/maven-project-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-core/2.0/maven-core-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0.6/maven-2.0.6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-impl/2.0.4/maven-reporting-impl-2.0.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting/2.0.4/maven-reporting-2.0.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven/2.0.4/maven-2.0.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-project/2.0.4/maven-project-2.0.4.pom

Downloading: http://repo1.maven.org/maven2/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom

Downloading: http://repo1.maven.org/maven2/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom

Downloading: http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom

Downloading: http://repo1.maven.org/maven2/commons-digester/commons-digester/1.6/commons-digester-1.6.pom

Downloading: http://repo1.maven.org/maven2/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom

Downloading: http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0/commons-logging-1.0.pom

Downloading: http://repo1.maven.org/maven2/commons-collections/commons-collections/2.1/commons-collections-2.1.pom

Downloading: http://repo1.maven.org/maven2/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom

Downloading: http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom

Downloading: http://repo1.maven.org/maven2/oro/oro/2.0.8/oro-2.0.8.pom

Downloading: http://repo1.maven.org/maven2/xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-core/1.0-alpha-7/doxia-core-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/oro/oro/2.0.7/oro-2.0.7.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.4/maven-plugin-api-2.0.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.0.4/maven-reporting-api-2.0.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-site-renderer/1.0-alpha-7/doxia-site-renderer-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-i18n/1.0-beta-6/plexus-i18n-1.0-beta-6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.4/plexus-components-1.1.4.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity/1.1.2/plexus-velocity-1.1.2.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-7/plexus-container-default-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/plexus/plexus-containers/1.0.2/plexus-containers-1.0.2.pom

Downloading: http://repo1.maven.org/maven2/plexus/plexus-root/1.0.3/plexus-root-1.0.3.pom

Downloading: http://repo1.maven.org/maven2/commons-collections/commons-collections/2.0/commons-collections-2.0.pom

Downloading: http://repo1.maven.org/maven2/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.pom

Downloading: http://repo1.maven.org/maven2/velocity/velocity/1.4/velocity-1.4.pom

Downloading: http://repo1.maven.org/maven2/velocity/velocity-dep/1.4/velocity-dep-1.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-decoration-model/1.0-alpha-7/doxia-decoration-model-1.0-alpha-7.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/1.5.4/plexus-container-default-1.5.4.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom

Downloading: http://repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/xbean/xbean/3.4/xbean-3.4.pom

Downloading: http://repo1.maven.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom

Downloading: http://repo1.maven.org/maven2/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom

Downloading: http://repo1.maven.org/maven2/com/google/collections/google-collections/1.0/google-collections-1.0.pom

Downloading: http://repo1.maven.org/maven2/com/google/google/1/google-1.pom

Downloading: http://repo1.maven.org/maven2/junit/junit/3.8.2/junit-3.8.2.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom

Downloading: http://repo1.maven.org/maven2/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.pom

Downloading: http://repo1.maven.org/maven2/commons-io/commons-io/1.4/commons-io-1.4.pom

Downloading: http://repo1.maven.org/maven2/org/apache/commons/commons-parent/7/commons-parent-7.pom

Downloading: http://repo1.maven.org/maven2/asm/asm/3.2/asm-3.2.pom

Downloading: http://repo1.maven.org/maven2/asm/asm-parent/3.2/asm-parent-3.2.pom

Downloading: http://repo1.maven.org/maven2/commons-lang/commons-lang/2.5/commons-lang-2.5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/commons/commons-parent/12/commons-parent-12.pom

Downloading: http://repo1.maven.org/maven2/oro/oro/2.0.7/oro-2.0.7.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-core/1.0-alpha-7/doxia-core-1.0-alpha-7.jar
Downloading: http://repo1.maven.org/maven2/commons-io/commons-io/1.4/commons-io-1.4.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/reporting/maven-reporting-impl/2.0.4/maven-reporting-impl-2.0.4.jar
Downloading: http://repo1.maven.org/maven2/commons-digester/commons-digester/1.6/commons-digester-1.6.jar


Downloading: http://repo1.maven.org/maven2/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar


Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/file-management/1.1/file-management-1.1.jar
Downloading: http://repo1.maven.org/maven2/commons-lang/commons-lang/2.5/commons-lang-2.5.jar
Downloading: http://repo1.maven.org/maven2/velocity/velocity/1.4/velocity-1.4.jar



Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.1/maven-dependency-plugin-2.1.jar

Downloading: http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar

Downloading: http://repo1.maven.org/maven2/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar

Downloading: http://repo1.maven.org/maven2/asm/asm/3.2/asm-3.2.jar
Downloading: http://repo1.maven.org/maven2/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar


Downloading: http://repo1.maven.org/maven2/commons-jxpath/commons-jxpath/1.3/commons-jxpath-1.3.jar

Downloading: http://repo1.maven.org/maven2/commons-collections/commons-collections/2.1/commons-collections-2.1.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-site-renderer/1.0-alpha-7/doxia-site-renderer-1.0-alpha-7.jar
Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar


Downloading: http://repo1.maven.org/maven2/velocity/velocity-dep/1.4/velocity-dep-1.4.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-io/1.0/maven-shared-io-1.0.jar

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar



Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-dependency-analyzer/1.1/maven-dependency-analyzer-1.1.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/doxia/doxia-decoration-model/1.0-alpha-7/doxia-decoration-model-1.0-alpha-7.jar



Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.jar
Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-i18n/1.0-beta-6/plexus-i18n-1.0-beta-6.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.jar


Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity/1.1.2/plexus-velocity-1.1.2.jar

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar

[INFO] ------------------------------------------------------------------------
[INFO] Building Moneydance
[INFO] task-segment: [clean]
[INFO] ------------------------------------------------------------------------
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.2/maven-clean-plugin-2.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-plugins/10/maven-plugins-10.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.2/maven-clean-plugin-2.2.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-parent/16/maven-parent-16.pom

Downloading: http://repo1.maven.org/maven2/org/apache/apache/7/apache-7.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.jar

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-profile/2.0/maven-profile-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-model/2.0/maven-model-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/file-management/1.2/file-management-1.2.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/file-management/1.2/file-management-1.2.jar
Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar


Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar

[INFO] [clean:clean {execution: default-clean}]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4 minutes
[INFO] Finished at: Tue Jan 11 22:06:17 CST 2011
[INFO] Final Memory: 33M/123M
[INFO] ------------------------------------------------------------------------

Saturday, September 11, 2010

Find the hidden Microsoft message...

After rebuilding my Windows 7 VM from scratch, I (of course) installed the latest Visual Studio 2010. The first time I ran it, it prompted me to choose my default settings. This is nothing new - Visual Studio has had this dialog for as many versions as I remember. The difference is, this time I actually noticed the "flavor text" that they include to describe the different configurations - I'd never previously paid any attention to it.

First, I saw the description for my default choice, C#:


Then I decided to compare notes with the different configurations. Good ol' C++:


And the new kid on the block, F#:


And finally, I wanted to see how the Visual Basic configuration is described:


I hope I'm not the only one who sees the remarkably heavy-handed marketing propaganda here - along with the serious implication that C#, C++, and F# developers don't care about building "world-class applications" - whatever that is supposed to mean!

Wednesday, August 4, 2010

Не знает счастья только тот, Кто его зова понять не смог...

Origa is the single biggest reason I want to learn Russian...

Пока жива, я могу стараться на лету не упасть,
Не разучиться мечтать...любить...
...Бесконечный бег... *
Calling Calling, For the place of knowing
There's more that what can be linked
Calling Calling, Never will I look away
For what life has left for me
Yearning Yearning, for what's left of loving
Собой остаться дольше... **

Inner Universe by Origa and Shanti Snyder

English translations:
Headline: "Only one who doesn't know happiness couldn't understand its call"
* "While I am alive, I can try not to fall while flying,
nor to forget how to dream...to love...
...Endless running..."
** "To remain myself longer..."

Monday, March 22, 2010

Living Lean?

I'm feeling pretty silly that this idea has never occurred to me before now. Being into all the bleeding-edge Agile software stuff as I am, I've been familiar with the basics of Lean Manufacturing for a few years now. But for some reason, it never crossed my mind until tonight to try to apply Lean concepts to my everyday life outside a workplace setting.

The specific part of life I'm thinking about is losing weight. My diet is abysmal (though what little pride I have insists that I acknowledge that it's at least somewhat better than the contemporary American norm). I've been mostly fixating lately about finding the right motivation to increase my exercise, to very little success. But tonight I hit upon an idea to help regulate my diet that just might work.

Lean Manufacturing tends itself towards the notion of "Just In Time" - any inventory (or even work) that's not strictly necessary for the current workload is considered waste. (I'm deliberately glossing over the Continuous Improvement aspect, which doesn't strictly apply to my idea.) In the case of my lifestyle and my diet, excess food supplies in my apartment are not just "waste" in the sense that they may go bad, they're also "waste" in the sense that I might consume them when I don't really need them (I.E. overeat).

So here's my idea - when I run myself out of existing supplies, I will only buy enough food for one day, approximately 2000 calories' worth, give or take. This way, when I'm out of food in the apartment, I have two options: go out shopping for more (something which my inertia has historically resisted) or do without, I.E. stick to a quasi-healthy diet. And as with all self-improvement schemes, the key ingredient here is willpower. (Which begs the question: do I have enough?)

Tuesday, October 27, 2009

Speed up your builds by 9.5% instantly!

Nope, despite the tone of the title, I'm not selling a product, even though it does sound like a sales pitch. But I did just do this on the builds on my team, and I thought I'd share. And though it's really not a revolutionary process, I've removed a guaranteed 1 minute and 6 seconds from every build cycle by deleting one line of code in one production class, and refactoring a constant into an injectable property in another.

The deleted line was in a method that is invoked in 3 different test:

Thread.Sleep(12000);


And the line converted from constant to injectable property was:

Thread.Sleep(30000);


Since our average build time over the last week is around 11:36, and these two edits save 66 seconds per build, I've achieved a time savings of 9.47% virtually instantly.

So the moral of the story is this: any time you feel a desire to include Thread.Sleep in production code, you need to go stick your head in a freezer until the feeling subsides.

P.S. I think it may be important to note that at least one of those two offending lines was written by me.

Thursday, September 10, 2009

A Unit Testing Dilemma

After returning to blogging after a really long hiatus with some really heavy and emotional stuff, I think I'm way the hell overdue for a development-related post.

I've long been a believer that one of the most important and most overlooked aspects of TDD is making sure the test fails first. To put it another way, here's "Gandalf's First Law of Unit Testing":
You shall not pass!

Gandalf the Grey, in his first (and last) TDD seminar


This step is crucial due to the extreme and surprising ease of writing utterly useless tests. If you're looking at a unit test and you suspect that it might be useless, here's one way to confirm your suspicions:

  • Comment out the entire body of the method under test

  • If needed, uncomment (or stub in) just enough code to make the class compile

  • Run the suspicious unit test again - if it passes when run against an empty method, then it's utterly useless

This isn't a contrived story; it's actually happened a couple times where I work. Granted, there may be an easier way to tell the uselessness, if the test in question performs neither assertions nor verification against fakes (mocks, stubs, test-doubles, whatever) and if that ain't a test smell, I don't know what is. But while that is an admittedly extreme (though real-world) example, there are a plethora of variations on the unit test that, once everything is inlined, boil down to "Assert.That(true)". And the risk of writing a useless test rises significantly if you're (mis)using a mocking framework that supports non-verifying fakes.

In any case, I'm also a philosophical believer that with a certain amount of elbow-grease and prestidigitation, it's possible to wrap legacy code (in the Michael Feathers sense of the phrase) in tests. I say that I'm a philosophical believer of this, since I've yet to actually make it work. It certainly doesn't seem to be a trivial undertaking.

And herein lies the dilemma to which I allude in the post title. When writing a new unit test against a piece of previously-existing and previously-untested code, how can you write the test so that it fails first? Is there a sane way? Should you comment out the method's code, like in my earlier example, and write the test bit by bit, uncommenting code to make the test pass each time?

Saturday, August 15, 2009

A Long Overdue Reality Check (@wundarous)

For the last month or so, I've been in a largely dark and unhappy mood. There's been a confluence of events and factors which have led to this depressive fugue, including (but not limited to):

  • Self-image; I now weigh more than I ever have in my life, and am precariously close to a big, round, psychologically-significant number of pounds

  • Money; my credit score is at a precariously low point for someone employed by a credit-card processor, and the interest rate on a huge and maxed-out unsecured line-of-credit was recently hiked to usurious levels

  • Living arrangements; I recently went through a stressful apartment move, though I honestly can't point my finger at the stress points

  • Loneliness; being recently divorced, I had physical custody of my daughter for most of the summer. The act of returning her to her mother, 800+ miles away, knowing I won't spend time with her again for the better part of a year, left a surprisingly huge yawning void in my life.

These and other things conspired to make me quite depressed, and left me quite discontented with my lot in life, and lately I've been prone to a lot of really unhelpful "poor me" thinking.

But then, reality decided to rear up on its hind legs and smack me across the face with itself, like this. It served to remind me that no matter how good of a person you may think that you are, and how much you may think your life is unfair or crappy, there's always another good person out there whose situation is suddenly, devastatingly, life-threateningly orders of magnitude worse-off than yours.

When I first read Wendy's blog entry that's linked to above, on the day she wrote it nearly a month ago, I felt like I had been gut-punched. I've never even corresponded with her, much less met her, but I've got a great deal of respect for her. I'll be the first to admit that the only reason I even know her name is due to a very intriguing Google Images result for the query "pair programming", but even though I first came to her blog because of the photo (seriously, how often does one encounter really talented female software developers who are that hot?), I definitely stayed for the articles. And when she gave in and finally started a Twitter account, I was one of her first followers.

So, between the constant noise of dealing with my own life (not to mention my "poor me" depressive state) and the serious shock of her announcement leaving me without knowledge of what to say, it's taken me almost a month to write this. But I suppose the moral of the story (for me, at least) is that Wendy's awful this-should-never-happen-to-anybody ordeal has started something positive in the life of a total stranger half a continent away by giving me a serious kick in my "poor me" complacency. Most, if not all, of the problems in my life are under my control to one degree or another and for the most part all I need to do to improve my situation is to choose to do so, and to persist and persevere. Complacency and a "woe is me" attitude are my worst enemies; get past them, and I've got a real shot at making my life better.

Finally, here's a story from my life of which I'm suddenly reminded. Wendy, if you ever end up reading this, this is for you.

I believe the year was 1977; I don't really remember for sure, since I was between 6 and 18 months old at the time and I only know the story second-hand. My mom had been having strange symptoms and been feeling unwell for some time when her doctor ran some tests and one day gave her a diagnosis of a disease mom had only barely heard of, and he didn't want to give her a prognosis without some more work and research. Mom came home and went next door to talk to a friend who was an RN, and asked her "What do you know about Lupus?" Her friend's tactless response was "Not a lot, other than it's always fatal. Why?"

Mom was always a fighter, and refused to let this thing beat her. Meanwhile, the state of the art changed radically and rapidly, and nobody would ever say that Lupus is "always fatal" anymore. She did eventually die - on August 12, 2003, when I was 27 years old, from complications from type II diabetes. I have decades of happy memories of her, and the best ones are the looks of incomparable joy on her face as she played with her granddaughter.

Fight, Wendy. Give your daughter her own decades of happy memories, and play with your grandchildren.