You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Bas van Erp (Jira)" <ji...@apache.org> on 2023/07/10 11:19:00 UTC

[jira] [Comment Edited] (MENFORCER-390) "requireFilesExist" no longer handles non-canonical paths

    [ https://issues.apache.org/jira/browse/MENFORCER-390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17741566#comment-17741566 ] 

Bas van Erp edited comment on MENFORCER-390 at 7/10/23 11:18 AM:
-----------------------------------------------------------------

Running into this as well:
{code:java}
<configuration>
  <rules>
    <requireFilesExist>
      <message>User security has not been setup correctly! See README.md</message>
      <files>
        <file>${project.baseUri}/../scripts/myUserConf.secure</file>
        <file>${project.baseUri}/../scripts/myUserKey.secure</file>
      </files>
    </requireFilesExist>
  </rules>
</configuration>{code}
Results in:
{code:java}
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.3.0:enforce (enforce-files-exist) on project my-module: 
[ERROR] Rule 0: org.apache.maven.enforcer.rules.files.RequireFilesExist failed with message:
[ERROR] User security has not been setup correctly! See README.md
[ERROR] Some required files are missing:
[ERROR] /Users/myname/workspace/myproject/my-module/../scripts/myUserConf.secure
[ERROR] /Users/myname/workspace/myproject/my-module/../scripts/myUserKey.secure
{code}
The files are most definetely present in {{/Users/myname/workspace/myproject/scripts/}}


was (Author: JIRAUSER300062):
Running into this as well:

 
{code:java}
<configuration>
  <rules>
    <requireFilesExist>
      <message>User security has not been setup correctly! See README.md</message>
      <files>
        <file>${project.baseUri}/../scripts/myUserConf.secure</file>
        <file>${project.baseUri}/../scripts/myUserKey.secure</file>
      </files>
    </requireFilesExist>
  </rules>
</configuration>{code}
Results in:

 
{code:java}
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.3.0:enforce (enforce-files-exist) on project my-module: 
[ERROR] Rule 0: org.apache.maven.enforcer.rules.files.RequireFilesExist failed with message:
[ERROR] User security has not been setup correctly! See README.md
[ERROR] Some required files are missing:
[ERROR] /Users/myname/workspace/myproject/my-module/../scripts/myUserConf.secure
[ERROR] /Users/myname/workspace/myproject/my-module/../scripts/myUserKey.secure
{code}
The files are most definetely present in {{/Users/myname/workspace/myproject/scripts/}}

 

 

 

> "requireFilesExist" no longer handles non-canonical paths
> ---------------------------------------------------------
>
>                 Key: MENFORCER-390
>                 URL: https://issues.apache.org/jira/browse/MENFORCER-390
>             Project: Maven Enforcer Plugin
>          Issue Type: Bug
>          Components: requireFilesExist, Standard Rules
>    Affects Versions: 3.0.0
>            Reporter: Gene Smith
>            Priority: Major
>
> With the commit to resolve MENFORCER-364, the rule "requireFileExists" checks that the canonical path of a file is the same as the absolute path.
> But not all absolute paths are canonical.
>  * absolute paths can involve symbolic links
>  * and they are allowed to have parts which are relative
>  ** {{/../}}
>  ** {{/./}}{{}}{{}}{{}}
> And when it fails to handle a path, it can report that a file does not exist, even though the local system will resolve the path.
> A blunt solution might be three separate rules:
>  * requireFileExists
>  ** the provided path must resolve to a file (which may be a directory or link)
>  * requireCanonicalFileExists
>  ** the provided path must exist as a canonical file
>  * requireCasesenstiveFileExists
>  ** the provided path must file a file
>  ** the file name must have the same case (upper//lower) as the
>  ** the parts of the path from the file up must have the same case until they go through a symbolic link
> I have used  the "nio" package to handle some of stuff before.  I will add a comment with some java code I would start with.  Since the outcome here is very dependent on the use case you pick, the java will be "meta code" with ??? where you have to know the use case to know the outcome.
> but basically, with "nio" you can march up a path checking for symbolic links and such.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)