LFTP 用の maven プラグインを作成しようとしていますが、これには Java アプリケーションから LFTP コマンド ライン プログラムを呼び出す必要があります。
ただし、単一引用符、二重引用符、エスケープされた単一/二重引用符を使用して、渡されたコマンドを処理することはできません。
これまでのコードは次のとおりです。
final String command = "lftp -e 'set ftp:ssl-protect-data true; put -O /data/upload/ src/test/resources/test-file.txt; bye' -u username,password -p 21 192.168.1.100"
final CommandLine cmdLine = CommandLine.parse(command.toString());
final DefaultExecutor executor = new DefaultExecutor();
executor.setWorkingDirectory(new File(baseDir));
final int result = executor.execute(cmdLine);
そして、次に何を試すべきかについての提案を探しています。
編集 #1: and を事前に作成された文字列として使用しようとしorg.apache.commons.exec.CommandLine
ましたが、次のエラーが発生します。
Unknown command `set ftp:ssl-protect-data true; put -O /data/upload/ src/test/resources/test-file.txt; bye'.
Exception in thread "main" org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:377)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:160)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:147)
at org.welsh.build.automation.lftp.plugin.TestClass.main(TestClass.java:30)
しかし、生成されたコマンドを印刷して手動で実行すると、正常に動作します。
編集 #2:いくつかの明確さを追加しました。