In AbstractGrailsMojo.java the code sets the project.name as the app.name if not equal, then MvnValidateMojo.java validates that the project.artifactId equals the app.name. This does not allow you to set the project.name different than project.build.finalName or project.artifactId in the Maven pom.
The sync and validation should operate off the project.artifactId or project.build.finalName since according to section 9.2 Maven Properties of the Sonatype Maven: A Complete Reference "A project’s artifactId is often used as the name of a deliverable" where the project.name is described as "The name and project description can often be useful properties to reference from documentation".
In AbstractGrailsMojo.java the code sets the project.name as the app.name if not equal, then MvnValidateMojo.java validates that the project.artifactId equals the app.name. This does not allow you to set the project.name different than project.build.finalName or project.artifactId in the Maven pom. The sync and validation should operate off the project.artifactId or project.build.finalName since according to section 9.2 Maven Properties of the Sonatype Maven: A Complete Reference "A project’s artifactId is often used as the name of a deliverable" where the project.name is described as "The name and project description can often be useful properties to reference from documentation".