On 11 October 2010 21:48, Hilco Wijbenga <hilco.wijbe...@gmail.com> wrote:
> I could have sworn I've used ${localRepository} before but it doesn't
> seem to work. I've also tried ${settings.localRepository} and
> ${maven.repo.local}. How do I refer to the location of the local
> repository in a portable way? Is there a difference between Maven2 and
> Maven3?

I had a look in the source code and found the following:

hi...@centaur ~/open-source/maven/maven3 $ find . -name '.svn' -prune
-o -type f | xargs grep LOCAL_REPO_PROPERTY
./maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java:
public static final String LOCAL_REPO_PROPERTY = "maven.repo.local";
./maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java:
   String localRepoProperty = request.getUserProperties().getProperty(
MavenCli.LOCAL_REPO_PROPERTY );
./maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java:
       localRepoProperty = request.getSystemProperties().getProperty(
MavenCli.LOCAL_REPO_PROPERTY );

So "maven.repo.local" seems to be the right property. As far as I can
tell, however, it never gets set?

hi...@centaur ~/open-source/maven/maven3 $ find . -name '.svn' -prune
-o -type f | xargs grep maven.repo.local
./maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java:
public static final String LOCAL_REPO_PROPERTY = "maven.repo.local";
(see above)
./maven-embedder/src/test/resources/settings/invalid-settings.xml:
<localRepository>/Users/jvanzyl/maven-repo-local</localRepository
(test code)
./build.xml:ant -Dmaven.repo.local=/my/integration/repository
./build.xml:    <property name="maven.repo.local"
value="${user.home}/.m2/repository" />
./build.xml:    <echo>maven.repo.local = ${maven.repo.local}</echo>
./build.xml:      <localRepository path="${maven.repo.local}" />
./build.xml:      <localRepository path="${maven.repo.local}" />
./build.xml:      <localRepository path="${maven.repo.local}" />
./build.xml:      <localRepository path="${maven.repo.local}" />
./build.xml:      <arg value="-Dmaven.repo.local=${maven.repo.local}" />
(ant stuff)
./maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java:
   String ALT_LOCAL_REPOSITORY_LOCATION = "maven.repo.local";
(never used anywhere)
./maven-core/src/main/resources/org/apache/maven/messages/messages_de.properties:maven.repo.local.unset.warning=maven.repo.local
ist nicht gesetzt.
./maven-core/src/main/resources/org/apache/maven/messages/messages_ja.properties:maven.repo.local.unset.warning=maven.repo.local
\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093.
./maven-core/src/main/resources/org/apache/maven/messages/messages_el.properties:maven.repo.local.unset.warning=maven.repo.local
\u00e4\u00e5\u00ed \u00dd\u00f7\u00e5\u00e9
\u00ef\u00f1\u00e9\u00f3\u00f4\u00e5\u00df.
./maven-core/src/main/resources/org/apache/maven/messages/messages_es.properties:maven.repo.local.unset.warning=\u00a1maven.repo.local
no est\u00e1 definido!
./maven-core/src/main/resources/org/apache/maven/messages/messages_nl.properties:maven.repo.local.unset.warning=maven.repo.local
is niet ingesteld.
./maven-core/src/main/resources/org/apache/maven/messages/messages_fr.properties:maven.repo.local.unset.warning=maven.repo.local
n'est pas d\u00e9fini.
./maven-core/src/main/resources/org/apache/maven/messages/messages.properties:maven.repo.local.unset.warning=maven.repo.local
is not set.
./maven-core/src/main/resources/org/apache/maven/messages/messages_no.properties:maven.repo.local.unset.warning=maven.repo.local
er ikke definert.
./maven-core/src/main/resources/org/apache/maven/messages/messages_zh_CN.properties:maven.repo.local.unset.warning=\u6ca1\u6709\u8bbe\u7f6e
maven.repo.local \u5c5e\u6027\u3002
./maven-core/src/main/resources/org/apache/maven/messages/messages_pl.properties:maven.repo.local.unset.warning=maven.repo.local
nie jest zdefiniowane.
./maven-core/src/main/resources/org/apache/maven/messages/messages_ko.properties:maven.repo.local.unset.warning
= maven.repo.local \uC774 \uC124\uC815\uB418\uC5B4\uC788\uC9C0
\uC54A\uC2B5\uB2C8\uB2E4.
(i18n messages)
./maven-core/src/site/apt/configuration-management.apt:
maven.repo.local
(system,user,default=${maven.user.config.dir}/repository)
(documentation)
./maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java:
           System.getProperty( "maven.repo.local", System.getProperty(
"user.home" ) + "/.m2/repository" );
./maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java:
           System.getProperty( "maven.repo.local", System.getProperty(
"user.home" ) + "/.m2/repository" );
(more tests)
./maven-compat/src/main/resources/META-INF/maven/plugin-expressions/rootless.paramdoc.xml:
         <key>-Dmaven.repo.local=/path/to/local/repo</key>
(documentation)
./pom.xml:      <id>maven-repo-local</id>
./pom.xml:          <name>maven.repo.local</name>
./pom.xml:                  <name>maven.repo.local</name>
./pom.xml:                  <value>${maven.repo.local}</value>
(use it)

I can't tell where maven.repo.local is being set and in my POM it
shows up as "${maven.repo.local}". I could definitely be missing
something (I can't work out where ${project.build.directory} is set
either) :-) but is ${maven.repo.local} working for anyone?

Is there some documentation on how properties are handled internally?
How *does* project.build.directory get its value?

Example POM:

<?xml version="1.0" encoding="UTF-8"?>
<project
  xmlns="http://maven.apache.org/POM/4.0.0";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd";
>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>maven-local-repo</artifactId>
  <packaging>jar</packaging>
  <version>0.1-SNAPSHOT</version>
  <name>${x} - {y}</name>
  <properties>
    <x>${maven.local.repo}</x>
    <y>${project.build.directory}</y>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>clean</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <echo>${x}</echo>
                <echo>${y}</echo>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

Simply run mvn clean.

Cheers,
Hilco

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to