Question

My Pom.xml file contains below code what does it means?

<profiles>
    <profile>
        <id>inmemory</id>
        <properties>
            <env>inmemory</env>
        </properties>
    </profile>
    <profile>
        <id>cloudbees</id>
        <properties>
            <env>cloudbees</env>
        </properties>
    </profile>
</profiles>
Was it helpful?

Solution

It means nothing in particular, it only declares two build profiles each one of them set the value of the env property.

The meaning depends on how such declaration is used.

For example if in your pom.xml there is something like:

<packaging>jar</packaging>
...
<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
                <built-for-environment>${env}</built-for-environment>
            </manifestEntries>
        </archive>
    </configuration>
</plugin>
...
<profiles>
    <profile>
        <id>inmemory</id>
        <properties>
            <env>inmemory</env>
        </properties>
    </profile>
    <profile>
        <id>cloudbees</id>
        <properties>
            <env>cloudbees</env>
        </properties>
    </profile>
</profiles>

and you run:

mvn clean install -Pinmemory

than in the generated MANIFEST.MF you can find the row:

built-for-environment: inmemory

So the meaning, in this example, is to add in the MANIFEST.MF an entry row with built-for-environment: followed by the name of the profile id.

You can answer yourself, finding the meaning for your project, by searching for ${env} in your project.

OTHER TIPS

A Build profile is a set of configuration values which can be used to set or override default values of Maven build. Using a build profile, you can customize build for different environments such as Production v/s Development environment?

so here It declares two profiles: an in-memory profile and a cloudbees profile.

Profilers a new feature of the POM 4.0 is the ability of a project to change settings depending on the environment where it is being built. A profile element contains both an optional activation (a profile trigger) and the set of changes to be made to the POM if that profile has been activated. For example, a project built for a test environment may point to a different database than that of the final deployment. Or dependencies may be pulled from different repositories based upon the JDK version used.

so here It declares two profiles: an in-memory profile and a cloudbees profile.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top