63 votos

Especificar el sistema de propiedad para proyecto de Maven

Hay una manera de ( me refiero a cómo hacer I ) establecer un sistema de propiedad en un proyecto de maven?

Quiero acceder a la propiedad de mi examen y mi webapp ( que se ejecuta localmente ) y sé que puedo uso de java en el sistema de propiedad.

Debo poner eso en ./settings.xml o algo por el estilo?

Contexto

Tomé un proyecto de código abierto y logró cambiar la base de datos de configuración para utilizar JavaDB

Ahora, en la url de jdbc para JavaDB, la ubicación de la base de datos podría ser especificada como la ruta de acceso completa ( ver: esta otra pregunta )

O una propiedad del sistema: derby.system.home

Tengo el código de trabajo ya, pero en la actualidad todo está codificado para:

 jdbc:derby:/Users/oscarreyes/javadbs/mydb

Y quiero eliminar la ruta de acceso completa, para que quede así:

 jdbc:derby:mydb

Para ello tengo que especificar el sistema de propiedad ( derby.system.home ) a maven, pero no sé cómo.

La prueba se realiza utilizando junit ( no veo ningún plugin en pom.xml ) y la aplicación web se ejecuta con el plugin de jetty.

Especificar el sistema de propiedad en la línea de comandos parece que a jetty, pero no estoy seguro de si eso es algo práctico ( concede a algunos otros usuarios pueden ejecutar desde eclipse/idea/ lo que sea )

70voto

Pascal Thivent Puntos 295221

Hay una manera de ( me refiero a cómo hacer I ) establecer un sistema de propiedad en un proyecto de maven? Quiero acceder a la propiedad de mi prueba [...]

Puede establecer las propiedades del sistema en el Maven Infalible Plugin de configuración (esto tiene sentido, ya que las pruebas son bifurcadas por defecto). Desde El Uso De Propiedades Del Sistema:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <systemPropertyVariables>
            <propertyName>propertyValue</propertyName>
            <buildDirectory>${project.build.directory}</buildDirectory>
            [...]
          </systemPropertyVariables>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

y mi webapp ( que se ejecuta localmente )

No estoy seguro de lo que quieres decir aquí, pero voy a asumir la webapp contenedor es iniciado por Maven. Se puede pasar de propiedades del sistema mediante la línea de comandos:

mvn -DargLine="-DpropertyName=propertyValue"

Actualización: Ok, lo tengo ahora. Para Jetty, usted también debe ser capaz de establecer las propiedades del sistema en el Maven Embarcadero de configuración del Plugin. A Partir De La Configuración De Propiedades Del Sistema:

<project>
  ...
  <plugins>
    ...
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <configuration>
         ...
         <systemProperties>
            <systemProperty>
              <name>propertyName</name>
              <value>propertyValue</value>
            </systemProperty>
            ...
         </systemProperties>
        </configuration>
      </plugin>
  </plugins>
</project>

65voto

yegor256 Puntos 21737

propiedades-maven-plugin plugin puede ayudar:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
            <configuration>
                <properties>
                    <property>
                        <name>my.property.name</name>
                        <value>my.property.value</value>
                    </property>
                </properties>
            </configuration>
        </execution>
    </executions>
</plugin>

9voto

bvesco Puntos 86

He aprendido también es posible hacer esto con el exec-maven-plugin si usted está haciendo un "independiente" de java de la aplicación.

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>${maven.exec.plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>${exec.main-class}</mainClass>
                <systemProperties>
                    <systemProperty>
                        <key>myproperty</key>
                        <value>myvalue</value>
                    </systemProperty>
                </systemProperties>
            </configuration>
        </plugin>

2voto

amram99 Puntos 80

Si su prueba y webapp están en el mismo proyecto de Maven, puede utilizar una propiedad en el proyecto POM. A continuación, puede filtrar determinados archivos que permitirá Maven para establecer la propiedad de los archivos. Hay diferentes maneras de filtro, pero el más común es en los recursos de fase http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-description.html

Si la prueba y de la webapp se encuentran en diferentes proyectos Maven, usted puede poner la propiedad en settings.xml, que está en el repositorio de maven carpeta (C:\Documents and Settings\nombre de usuario.m2) en Windows. Usted todavía tendrá que utilizar el filtrado o algún otro método para leer la propiedad a su examen y webapp.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X