As with the other aspects of profile configuration, this answer is not straightforward.Depending on where you choose to configure your profile, you will have access to varying POM configuration options. Anything that seems to stand a high chance of changing the result of the build is restricted to the inline profiles in the POM.We've already mentioned the fact that adding profiles to your build has the potential to break portability for your project.We've even gone so far as to highlight circumstances where profiles are likely to break project portability.They modify the POM at build time, and are meant to be used in complementary sets to give equivalent-but-different parameters for a set of target environments (providing, for example, the path of the appserver root in the development, testing, and production environments).
There are two main problem areas to keep in mind when using profiles.
All profiles that are active by default are automatically deactivated when a profile in the POM is activated on the command line or through its activation config.
Now that we've talked about where to specify profiles, and how to activate them, it will be useful to talk about what you can specify in a profile.
Another reason is that this POM info is sometimes being reused from the parent POM.
External files such as also does not support elements outside the POM-profiles. When the effective POM get deployed to a remote repository, any person can pickup its info out of the repository and use it to build a Maven project directly.